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;

phpEnv 里没有直接查数据库磁盘占用的命令
phpEnv 是 Windows 下的 PHP 集成环境(类似 XAMPP),它本身不提供数据库空间查询功能。真正管理 MySQL 数据库的是它内置的 mysqld 进程,而磁盘占用必须进 MySQL 内部查——不是看 phpEnv 控制面板里的“服务状态”,也不是看 data 文件夹的文件大小(那包含日志、临时文件等干扰项)。
登录 MySQL 后用 SQL 查真实数据+索引大小
打开 phpEnv 自带的 MySQL 客户端(或命令行执行 mysql -u root -p),切换到目标数据库后运行:
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;
这个查询统计的是 information_schema.TABLES 中记录的 data_length(数据)和 index_length(索引)之和,单位是字节,转成 MB 更直观。注意:table_schema 就是数据库名,包括 mysql、information_schema 等系统库,你关心的业务库会排在前面。
为什么不能直接看 phpEnv 的 data 目录?
phpEnv 的 MySQL 数据文件默认在 phpEnv\MySQL\data\,但直接看这个目录有三个问题:
立即学习“PHP免费学习笔记(深入)”;
-
.ibd文件大小 ≠ 实际数据量:InnoDB 表空间可能预分配、未回收,du -sh或资源管理器看到的比 SQL 查的大很多 - 日志文件干扰:
ib_logfile0、mysql-bin.*等二进制日志、redo log 占用空间,但不属于“数据库内容” - 权限与符号链接:Windows 下某些版本会用符号链接指向其他盘符,资源管理器可能无法正确解析路径
查单个表或更细粒度的空间分布
如果发现某个库特别大,想定位到具体哪张表占空间,用这个语句:
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 才更新准确。



















