一个Shell小脚本精准统计Mysql每张表的行数
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,前言对于开发或者运维人员来说,Mysql数据库每张表的数量肯定是要了解下,有助于我们清理无用数据或者了解哪张表比较占用空间。另外多次统计表的行数,还能发现Mysql表的增量情况,能够预测表未来会有多大
千家信息网最后更新 2024年11月18日一个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 Databaseinformation_schemamysqlperformance_schemashijiangetestwordpress
循环获取所有表
有了库信息,获取所有表就简单了,直接上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> doneinformation_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> doneinformation_schema.CHARACTER_SETS 40information_schema.COLLATIONS 219information_schema.COLLATION_CHARACTER_SET_APPLICABILITY 219information_schema.COLUMNS 1789information_schema.COLUMN_PRIVILEGES 0shijiange.logincount 4shijiange.member 0shijiange.user 2097153test.detect_servers 0wordpress.wp_commentmeta 0wordpress.wp_comments 0wordpress.wp_links 0wordpress.wp_options 156
变量化,脚本直接用
需要统计哪个Mysql,前面三个变量一改,立马就能统计所有表的大小了。
mysqlhost=127.0.0.1mysqluser=xxxmysqlpassword=xxxfor 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" donedone
想看哪张表的行数最多?
之前的脚本加个 |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 2shijiange.user 2097153information_schema.INNODB_BUFFER_PAGE 8191performance_schema.events_waits_summary_by_thread_by_event_name 5320information_schema.INNODB_BUFFER_PAGE_LRU 3453
统计
脚本
数据
循环
代码
数据库
变量
统计表
实用
三个
人员
信息
前言
增量
大小
就是
废话
情况
数量
空间
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
教育类app软件开发的摘要
我的世界服务器命令
幻塔官网是哪个服务器
微信小游戏加载服务器资源
厦门网站建设软件开发
在网络安全中的应用
计算机三级数据库技术怎么考
数据库表设计面试
软件开发设计阶段是什么
网络安全行业的重要性
游戏软件开发占有率
计算机网络技术竞赛的流程
湖南省软件开发公司名录
关于网络安全的漫画四年级的
页面中修改数据库中的内容
网关服务器部署在哪里
负责北京银行网络安全的公司
软件开发时间节点计划表
我的世界国际版服务器推荐1.8.2
诗菲网络技术有限公司
jso数据库增删改查
服务器可以用在电脑上吗
密云区正规软件开发推荐咨询
分布式数据库的技术实现
做平台需要软件开发
数据库属性默认值为none
英雄联盟北京选哪个服务器
网络安全分析师
禾川服务器点动
黎明杀机服务器更新