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 Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
MySQL Shell的介绍以及安装
Apr 24 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
MySQL中distinct和count(*)的使用方法比较
May 26 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
解决Mysql的left join无效及使用的注意事项说明
Jul 01 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
Mysql InnoDB 的内存逻辑架构
May 06 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
MySQL数据源表结构图示
2008/06/05 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
javascript事件模型代码
2007/07/01 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
js倒计时小程序
2013/11/05 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
vue实现拖拽效果
2019/12/23 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
Python内置数据类型详解
2014/08/18 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
python实现人脸签到系统
2020/04/13 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
丧事主持词大全
2014/04/02 职场文书
产假请假条
2014/04/10 职场文书
初中学校军训方案
2014/05/09 职场文书
球队口号
2014/06/18 职场文书
安全环保演讲稿
2014/08/28 职场文书
企业务虚会发言材料
2014/10/20 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技