在使用MySQL时,我们有时候需要统计数据库或数据表的大小,以便后期优化。本文介绍如何查看MySQL数据库或数据表的数据容量大小。
1. 查询所有数据库记录数和容量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;
执行以上sql,查询结果会列出所有数据库(每个库一条记录)的记录数、数据容量和索引容量,如下图:
2. 查询指定数据库记录数和容量
在上面的基础上,很容易查询单个数据库的记录数和容量,以查询 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
WHERE table_schema='mysql';
查询结果如下图,展示单个数据库的记录数、数据容量和索引容量:
3. 查询所有数据库每个表的记录数和容量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. 查询指定数据库每个表的记录数和容量
同样,在第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
WHERE table_schema='mysql'
ORDER BY data_length DESC, index_length DESC;
查询结果如下图:
5. 统计所有数据库的总大小
最后,有时我们可能需要统计所有库的总大小,这个有前面的知识,就比较简单,直接列出语句如下:SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024),2),'MB') AS DATA FROM information_schema.TABLES;
结果如下所示:
data
-----------
1795.17MB ## 所有数据的总大小