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创建索引需要了解的
Apr 08 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
MySQL 如何分析查询性能
May 12 MySQL
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySQL创建定时任务
Jan 22 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MySQL约束(创建表时的各种条件说明)
Jun 21 MySQL
MySQL导致索引失效的几种情况
Jun 25 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
javascript顺序加载图片的方法
2015/07/18 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
详解Python中的__init__和__new__
2014/03/12 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
Hotels.com印度:酒店预订
2019/05/11 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
高三霸气励志标语
2014/06/24 职场文书
群众路线对照检查材料
2014/09/22 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers