MySQL如何查看数据库、表占用磁盘大小
一、查询指定数据库(例“test”)占用磁盘空间大小
SELECT
TABLE_SCHEMA AS "数据库",
sum( table_rows ) AS "记录数",
concat( TRUNCATE ( sum( data_length ) / 1024 / 1024, 2 ), ' MB' ) / 1024 AS "数据容量(GB)",
concat( TRUNCATE ( sum( index_length ) / 1024 / 1024, 2 ), 'MB' ) / 1024 AS "索引容量(GB)"
FROM
information_schema.TABLES
WHERE
table_schema = 'test';
结果:
二、查询指定数据库(例“test”)每张表、索引占用磁盘空间大小
SELECT
table_schema AS "数据库",
table_name AS "表名",
table_rows AS "记录数",
TRUNCATE ( data_length / 1024 / 1024, 2 ) / 1024 AS "数据容量(GB)",
TRUNCATE ( index_length / 1024 / 1024, 2 ) / 1024 AS "索引容量(GB)"
FROM
information_schema.TABLES
WHERE
table_schema = 'test'
ORDER BY
data_length DESC,
index_length DESC;
结果:
三、查询指定数据库(例“test”)每张表、索引占用磁盘空间大小及汇总,一个sql搞定
SELECT COALESCE
( bb.表名, '汇总' ) AS "表名",
bb.记录数,
bb.数据容量( GB),
bb.索引容量( GB)
FROM
(
SELECT
aa.表名,
sum( AA.记录数 ) AS "记录数",
sum( AA.数据容量( GB) ) AS "数据容量(GB)",
sum( AA.索引容量( GB) ) AS "索引容量(GB)"
FROM
(
SELECT
table_schema "数据库",
table_name AS "表名",
table_rows AS "记录数",
TRUNCATE ( data_length / 1024 / 1024, 2 ) / 1024 AS "数据容量(GB)",
TRUNCATE ( index_length / 1024 / 1024, 2 ) / 1024 AS "索引容量(GB)"
FROM
information_schema.TABLES
WHERE
table_schema = 'test'
ORDER BY
data_length DESC,
index_length DESC
) AA
GROUP BY
aa.表名 WITH ROLLUP
) bb
ORDER BY
bb.数据容量( GB) DESC,
bb.索引容量( GB) DESC;
结果: