mysql计算一个数据库里所有表的数据量,最近在做计算想查找一个数据库里基本所有的表数据量,数据量少的通过select count再加起来也是能够的,不过表的数据有点多,不可能一个一个地查。记住在Navicat里,选择一个数据量,点击表,如图:
那么如何通过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;
OK,原本还以为现已没问题了,然后仍是被反馈计算不对,后来去找了材料说是关于MyISAM才是正确的计算数据,但是关于InnoDB引擎的,可能与实践值相差 40% 到 50%,所以只是一个大概的计算所以针对这种状况,要更改存储引擎,肯定是不太合适,因为InnoDB是默认的存储引擎,能支撑事务外健,并发状况性能也比较好。继续找材料,正确的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='test'
order by table_rows desc, index_length desc;
查询成果如下:
如若转载,请注明出处:开源字节 sourcebyte.cn/article/240…