用一条命令看MySQL真实情况(最靠谱)
1.在 SSH 里执行:
mysql -uroot -p -e "
SELECT
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS '总库大小(GB)',
ROUND(SUM(data_free) / 1024 / 1024 / 1024, 2) AS '碎片空间(GB)'
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql','performance_schema','sys');
"
输入上面的命令后 回车 然后点击数据库 点开输入root密码 复制即可
2.****然后看 InnoDB buffer pool 实际命中率(MySQL 正常启动后执行):
mysql -uroot -p -e "SHOW ENGINE INNODB STATUS\G" | grep -A 3 "Buffer pool hit rate"
命中率 ≥ 99x%(比如 999/1000)就说明 buffer pool 完全够用,降了不会慢。
**3.**再查各库体积排行,Discuz! 的数据库名通常是 discuz或你自己定义的:
mysql -uroot -p -e "
SELECT table_schema AS db,
ROUND(SUM(data_length+index_length)/1024/1024, 1) AS size_MB
FROM information_schema.tables
GROUP BY table_schema
ORDER BY size_MB DESC;
"
输入上面的命令后 回车 然后点击数据库 点开输入root密码 复制即可
**4.**MySQL 数据库碎片整理
mysqlcheck -uroot -p -o --all-databases
这个操作会在低峰期执行,可能会短暂锁表,建议在夜间进行。
**5.**最终检查:确认 buffer pool 命中率
重启 MySQL 后,运行:
mysql -uroot -p -e "SHOW ENGINE INNODB STATUS\G" | grep -A 3 "Buffer pool hit rate"
如果看到类似 Buffer pool hit rate 1000 / 1000或 999 / 1000,说明你的 buffer pool 完全够用,速度不会有任何下