Mysql 如何合理地统计一个数据库里的所有表的数据量


Posted in MySQL onApril 18, 2022

场景:

mysql统计一个数据库里所有表的数据量,最近在做统计想查找一个数据库里基本所有的表数据量,数据量少的通过select count再加起来也是可以的,不过表的数据有点多,不可能一个一个地查

记得在Navicat里,选择一个数据量,点击表,如图:

Mysql 如何合理地统计一个数据库里的所有表的数据量

是可以看到所有表具体的数据行的

Mysql 如何合理地统计一个数据库里的所有表的数据量

然后可以通过sql实现?在mysql里是可以查询information_schema.tables这张表的

SELECT table_rows,table_name FROM information_schema.tables  
 WHERE TABLE_SCHEMA = '数据库名称' 
 and table_name not in ('不查询的表名称') 
 ORDER BY table_rows DESC;

要统计的,加上sum函数就可以

SELECT sum(table_rows) FROM information_schema.tables  
 WHERE TABLE_SCHEMA = '数据库名称' 
 and table_name not in ('不查询的表名称') 
 ORDER BY table_rows DESC;

OK,本来还以为已经没问题了,然后还是被反馈统计不对,后来去找了资料

https://dev.mysql.com/doc/refman/8.0/en/information-schema-tables-table.html

官网的解释:

TABLE_ROWS
The number of rows. Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB, this value is an approximation, and may vary from the actual value by as much as 40% to 50%. In such cases, use SELECT COUNT(*) to obtain an accurate count.
TABLE_ROWS is NULL for INFORMATION_SCHEMA tables.
For InnoDB tables, the row count is only a rough estimate used in SQL optimization. (This is also true if the InnoDB table is partitioned.)

大概意思是对于MyISAM才是正确的统计数据,但是对于InnoDB引擎的,可能与实际值相差 40% 到 50%,所以只是一个大概的统计

所以针对这种情况,要更改存储引擎,肯定是不太合适,因为InnoDB是默认的存储引擎,能支持事务外健,并发情况性能也比较好

所以,根据网上的做法,重新analyze 对应表,在mysql8.0版本是不管用的,发现查询数据还是不对,估计是mysql版本太高,mysql5版本没验证过

analyze table [table_name]

继续找资料,在Navicat工具->命令行页面,设置全局或者回话的information_schema_stats_expiry为0,表示自动更新,设置全局的不知道会不会影响性能,所以不知道还是设置会话的就可以

SET SESSION information_schema_stats_expiry=0;
SET @@SESSION.information_schema_stats_expiry=0;

查询设置的information_schema_stats_expiry值

show variables like '%information_schema_stats%';

MySQL 8.0为了提高information_schema的查询效率,会将视图tables和statistics里面的统计信息缓存起来,缓存过期时间由参数information_schema_stats_expiry决定

补充:查询表大小

我需要查询的库名为:kite

因此sql语句为:

select
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='kite'
order by table_rows desc, index_length desc;

结果如下:

Mysql 如何合理地统计一个数据库里的所有表的数据量

总结 

到此这篇关于MySQL如何统计一个数据库所有表数据量的文章就介绍到这了!

MySQL 相关文章推荐
正确使用MySQL update语句
May 26 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 MySQL
mysql脏页是什么
Jul 26 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
利用JuiceFS使MySQL 备份验证性能提升 10 倍
Mar 17 MySQL
MySQL数据库查询之多表查询总结
Aug 05 MySQL
MySQL新手入门进阶语句汇总
Sep 23 MySQL
Mysql如何查看是否使用到索引
Dec 24 MySQL
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
May 08 MySQL
MySQL三种方式实现递归查询
Apr 18 #MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Golang连接并操作MySQL
Apr 14 #MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 #MySQL
MySQL时区造成时差问题
Mysql调整优化之四种分区方式以及组合分区
Apr 13 #MySQL
聊聊mysql都有哪几种分区方式
Apr 13 #MySQL
You might like
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
Python函数嵌套实例
2014/09/23 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
大专毕业生自我评价分享
2013/11/10 职场文书
基层党员公开承诺书
2014/05/29 职场文书
企业总经理任命书
2014/06/05 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
2014年班务工作总结
2014/12/02 职场文书
同事欢送会致辞
2015/07/31 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
素质教育培训心得体会
2016/01/19 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS