原创

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

正文到此结束
本文目录