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主从复制及读写分离
May 07 MySQL
Mysql基础知识点汇总
May 26 MySQL
MySQL对数据表已有表进行分区表的实现
Nov 01 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
Jan 22 MySQL
MySQL读取JSON转换的方式
Mar 18 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
优化Mysql查询的示例
Apr 26 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 MySQL
mysql数据库如何转移到oracle
Dec 24 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
DISCUZ 分页代码
2007/01/02 PHP
php cookie 登录验证示例代码
2009/03/16 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python简单实现刷新智联简历
2016/03/30 Python
浅谈django中的认证与登录
2016/10/31 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Python Django搭建网站流程图解
2020/06/13 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
《最大的麦穗》教学反思
2014/04/17 职场文书
网站创业计划书
2014/04/30 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
心理学培训心得体会
2016/01/22 职场文书