MySQL中的数据是以数据库名作为文件夹名存储于机器的文件系统中的,并且在使用独立表空间的情况下,直接查看表的ibd文件大小就基本能确定每个表的大小,而在 TiDB 中,由于其底层存储是基于分布式的存储引擎 TiKV,数据被切分成 SST 文件分布在不同的节点上,因此无法像 MySQL 那样通过文件系统直接查看每个数据库或表的大小,所以需要通过SQL查询的方式来获取各个库及各个表的数据量大小信息
- 查看TiDB中各个库的大小
SELECT TABLE_SCHEMA AS 'Database', SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 AS 'Size (MB)' FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_SCHEMA ORDER BY
Size (MB)DESC;
- 查看某个库下所有表的大小
SELECT TABLE_SCHEMA AS 'Database', TABLE_NAME AS 'Table', SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 AS 'Size (MB)', TABLE_ROWS AS 'Row Count' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' GROUP BY TABLE_SCHEMA, TABLE_NAME ORDER BY
Size (MB)DESC;