Mysql数据库表容量大小查询方法
Mysql数据库表容量查询是指查询数据库中库表的记录数、数据占用存储空间、索引存储空间。其原理是查询Mysql提供的information_schema库中的tables表数据。
information_schema.tables表中相关的字段如下:
- TABLE_SCHEMA:数据库名称;
- TABLE_NAME:表名称;
- TABLE_ROWS:表中数据行数;
- DATA_LENGTH:表中数据大小,单位是字节(Byte);
- INDEX_LENGTH:表中索引大小,但是是字节(Byte)。
下面来看一下常见的查询SQL语句。
1.查看当前Mysql实例中所有数据库容量大小
SELECT table_schema AS '数据库',
sum(table_rows) AS '记录数',
sum(truncate(data_length/1024/1024, 2)) AS '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) AS '索引容量(MB)'
FROM information_schema.tables
GROUP BY table_schema
ORDER BY sum(data_length) DESC, sum(index_length) DESC; 查询结果查看:

2.查看指定数据库容量大小
使用的时候需要在where条件中,将table_schema的值改成需要查看的库名,比如查看dblog库的大小:
SELECT table_schema AS '数据库',
sum(table_rows) AS '记录数',
sum(truncate(data_length/1024/1024, 2)) AS '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) AS '索引容量(MB)'
FROM information_schema.tables
WHERE table_schema='dblog'; 查询结果查看:

3.查看当前Mysql实例中所有数据库各表容量大小
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
ORDER BY data_length DESC,index_length DESC; 查询结果查看:

4.查看指定数据库中各表容量大小
使用的时候需要在where条件中,将table_schema的值改成需要查看的库名,比如查看dblog库的大小:
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='dblog'
ORDER BY data_length DESC,index_length DESC; 查询结果查看:

5.查看整个MySQL实例的总大小
SELECT SUM(data_length + index_length) / 1024 / 1024 AS '当前实例总容量(MB)'
FROM information_schema.tables; 查询结果查看:

扩展说明:
1.对于InnoDB引擎,information_schema.tables表的数据只是通过算法估算出来的值,不代表对应表真实的大小和记录行数。
2.要获取准确的记录数,需要使用SELECT COUNT(*) FROM dblog.sys_log;查询获取。
3.要获取实际占用物理空间大小,需要到对应的数据文件目录使用du -sh命令查询获取。
4.参考文档:https://dev.mysql.com/doc/refman/8.0/en/information-schema-tables-table.html
正文到此结束
- 本文标签: Mysql
- 本文链接: https://blog.eyyyye.com/article/156
- 版权声明: 本文由爱做梦的比特原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
