在使用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  ## 所有数据的总大小

更多推荐

设置mysql数据库表的容量,MySQL查看数据库和数据表容量大小