SELECT table_schema AS `Database`, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS `Size(MB)` FROM information_schema.tables GROUP BY table_schema;
然而,有时查询结果显示的表大小不正确,可能是由于以下原因之一:
1. InnoDB表使用了文件系统缓存(例如buffer pool),因此查询结果不包括缓存中的数据。
2. 表被锁定或在运行DDL操作时被修改。
3. 查询结果可能包含未使用的空间和碎片,它们实际上并不占用磁盘上的物理空间。
为了避免这些问题,大家可以使用以下方法来获取更准确的表大小:
1. 在执行查询之前,大家可以重启MySQL服务器以清空缓存。
2. 确保在查询表大小之前,表没有被锁定或修改。
3. 使用OPTIMIZE TABLE语句来压缩表并释放未使用的空间和碎片。
OPTIMIZE TABLE table_name;
总之,查询MySQL表的大小是一个常见的任务,但在获取这些信息时需要注意一些细节,以确保结果的准确性。