发布于2026-07-08 阅读(0)
扫一扫,手机访问
phpEnv 本身不提供数据库磁盘占用查询命令,需登录 MySQL 执行 SQL:SELECT table_schema AS '数据库名', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '大小(MB)' FROM information_schema.TABLES GROUP BY table_schema ORDER BY SUM(data_length + index_length) DESC;

SELECT table_schema AS '数据库名', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '大小(MB)'FROM information_schema.TABLES GROUP BY table_schemaORDER BY SUM(data_length + index_length) DESC;这条查询的原理是读 `information_schema.TABLES` 系统视图,把 `data_length`(数据部分)和 `index_length`(索引部分)加起来,单位是字节,除以 1024 再除以 1024 转成 MB 更直观。注意,`table_schema` 就是数据库名,结果里会包含 `mysql`、`information_schema` 这些系统库,你关心的业务库一般会按大小排在最前面。
.ibd 文件大小 ≠ 实际数据量:InnoDB 的表空间有预分配和回收机制,用资源管理器或 `du` 命令看到的大小经常比 SQL 查出来的大不少。USE your_database_name;SELECT table_name AS '表名', ROUND((data_length + index_length) / 1024 / 1024, 2) AS '大小(MB)', ROUND(data_length / 1024 / 1024, 2) AS '数据(MB)', ROUND(index_length / 1024 / 1024, 2) AS '索引(MB)'FROM information_schema.TABLES WHERE table_schema = DATABASE()ORDER BY data_length + index_length DESC;把 `your_database_name` 换成你的实际库名,执行前先 `USE` 切过去。需要提醒一句:如果那张表用的是 MyISAM 引擎,`index_length` 对应的是 .MYI 文件的大小;如果是 InnoDB,则是共享表空间或独立表空间里的索引页尺寸。另外,`information_schema` 是个只读视图,它的数据依赖 MySQL 的元数据刷新频率,你刚删完一个大表,可能要等几秒,或者手动跑一次 `ANALYZE TABLE`,它才会更新到准确的数值。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8