查看 MySQL 数据库中每个表占用的空间大小
封面图
•
2025-09-29
•
MySQL
183
0
0
0
要查看 MySQL 数据库中**每个表占用的空间大小**,可以通过查询 `information_schema` 数据库中的 `TABLES` 表来实现。以下是几种常见的方法: --- ### ✅ 方法一:查看所有表的大小(按数据库) ```sql SELECT TABLE_SCHEMA AS 'Database', TABLE_NAME AS 'Table', ROUND(DATA_LENGTH / 1024 / 1024, 2) AS 'Data Size (MB)', ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS 'Index Size (MB)', ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS 'Total Size (MB)' FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name'; ``` 将 `'your_database_name'` 替换为你的实际数据库名。 --- ### ✅ 方法二:查看整个数据库中所有表的大小 如果你不指定数据库名,可以查看所有数据库中所有表的大小: ```sql SELECT TABLE_SCHEMA AS 'Database', TABLE_NAME AS 'Table', ROUND(DATA_LENGTH / 1024 / 1024, 2) AS 'Data Size (MB)', ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS 'Index Size (MB)', ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS 'Total Size (MB)' FROM information_schema.TABLES; ``` --- ### ✅ 方法三:按大小排序(从大到小) 如果你想看到最大的表排在前面: ```sql SELECT TABLE_SCHEMA AS 'Database', TABLE_NAME AS 'Table', ROUND(DATA_LENGTH / 1024 / 1024, 2) AS 'Data Size (MB)', ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS 'Index Size (MB)', ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS 'Total Size (MB)' FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name' ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; ``` --- ### 📝 注意事项: - `DATA_LENGTH` 是数据所占空间大小。 - `INDEX_LENGTH` 是索引所占空间大小。 - 单位是字节,除以 `1024*1024` 转换为 MB。 - 如果你使用的是 **InnoDB** 存储引擎,这个信息是准确的。 - 如果你使用的是 **MyISAM**,也是一样的结果。 --- ### 🛠️ 如果你没有权限访问 `information_schema`? 你可以使用以下命令查看某个表的大小(但只能针对单个表): ```sql SHOW TABLE STATUS FROM your_database_name LIKE 'your_table_name'; ``` 输出中会包含 `Data_length` 和 `Index_length` 字段。 --- 如需进一步帮助,请告诉我你使用的 MySQL 版本或存储引擎(如 InnoDB、MyISAM),我可以提供更详细的建议。
上一篇:
mysql查看库、表大小
下一篇:
mysql登录不指定sock文件无法登录
标题录入,一次不能超过6条
返回顶部
留言
留言
评论