日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现

發布時間:2024/9/19 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

對于開發或者運維人員來說,Mysql數據庫每張表的數量肯定是要了解下,有助于我們清理無用數據或者了解哪張表比較占用空間。

另外多次統計表的行數,還能發現Mysql表的增量情況,能夠預測表未來會有多大的量。

廢話不多說,直接帶大家寫一個簡單的Shell小腳本

循環獲取數據庫名

直接上Shell代碼,show databases獲取所有的庫名。結果有一個我們不想要的,就是Database,這個grep -v掉,輕松獲取所有數據庫

[root@shijiangeit ~]# mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| shijiange |

| test |

| wordpress |

+--------------------+

[root@shijiangeit ~]# mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null |grep -v Database

information_schema

mysql

performance_schema

shijiange

test

wordpress

循環獲取所有表

有了庫信息,獲取所有表就簡單了,直接上Shell代碼。show tables獲取所有表名,其中Tables_in不需要,grep -v掉。

[root@shijiangeit ~]# for onedb in $(mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null |grep -v Database);do

> echo $onedb

> mysql -h 127.0.0.1 -uxxx -pxxx $onedb -e "show tables" 2>/dev/null

> done

information_schema

+---------------------------------------+

| Tables_in_information_schema |

+---------------------------------------+

| CHARACTER_SETS |

| COLLATIONS |

| COLLATION_CHARACTER_SET_APPLICABILITY |

| COLUMNS |

| COLUMN_PRIVILEGES |

| ENGINES |

| EVENTS |

| FILES |

| GLOBAL_STATUS |

| GLOBAL_VARIABLES |

| KEY_COLUMN_USAGE |

循環統計每張表的行數

取出庫名加表名,一個select count(1)統計表的行數,循環統計,直接上Shell代碼。

[root@shijiangeit ~]# for onedb in $(mysql -h 127.0.0.1 -uxxx -pxxx -e "show databases;" 2>/dev/null |grep -v Database);do

> for onetab in $(mysql -h 127.0.0.1 -uxxx -pxxx $onedb -e "show tables" 2>/dev/null |grep -v 'Tables_in_');do

> onetablength=$(mysql -h 127.0.0.1 -uxxx -pxxx $onedb -e "select count(1) from $onetab" 2>/dev/null |grep -v 'count')

> echo -e "$onedb.$onetab\t$onetablength"

> done

> done

information_schema.CHARACTER_SETS 40

information_schema.COLLATIONS 219

information_schema.COLLATION_CHARACTER_SET_APPLICABILITY 219

information_schema.COLUMNS 1789

information_schema.COLUMN_PRIVILEGES 0

shijiange.logincount 4

shijiange.member 0

shijiange.user 2097153

test.detect_servers 0

wordpress.wp_commentmeta 0

wordpress.wp_comments 0

wordpress.wp_links 0

wordpress.wp_options 156

變量化,腳本直接用

需要統計哪個Mysql,前面三個變量一改,立馬就能統計所有表的大小了。

mysqlhost=127.0.0.1

mysqluser=xxx

mysqlpassword=xxx

for onedb in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword -e "show databases;" 2>/dev/null |grep -v Database);do

for onetab in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "show tables" 2>/dev/null |grep -v 'Tables_in_');do

onetablength=$(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "select count(1) from $onetab" 2>/dev/null |grep -v 'count')

echo -e "$onedb.$onetab\t$onetablength"

done

done

想看哪張表的行數最多?

之前的腳本加個 |sort -nrk 2|less 搞定,超實用的小腳本就這樣完成了

[root@shijiangeit ~]# for onedb in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword -e "show databases;" 2>/dev/null |grep -v Database);do

> for onetab in $(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "show tables" 2>/dev/null |grep -v 'Tables_in_');do

> onetablength=$(mysql -h $mysqlhost -u$mysqluser -p$mysqlpassword $onedb -e "select count(1) from $onetab" 2>/dev/null |grep -v 'count')

> echo -e "$onedb.$onetab\t$onetablength"

> done

> done | sort -nrk 2

shijiange.user 2097153

information_schema.INNODB_BUFFER_PAGE 8191

performance_schema.events_waits_summary_by_thread_by_event_name 5320

information_schema.INNODB_BUFFER_PAGE_LRU 3453

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持免費資源網。

總結

以上是生活随笔為你收集整理的shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。