能快速暴露慢查询、锁表和索引缺失问题——关键在用对命令、看对字段、结合State和Time判断:执行SHOW FULL PROCESSLIST查阻塞与长查询,用EXPLAIN验证wp_options索引有效性,监控Com_*变量估QPS分布,查INNODB_TRX识别悬挂事务。

不能直接测“查询耗时”,但能快速暴露慢查询、锁表和索引缺失问题——关键在用对命令、看对字段、结合State和Time判断。
执行 SHOW FULL PROCESSLIST 查看实时阻塞与长查询
这是最贴近“性能测试”的入口,不是测单条语句毫秒级耗时,而是看它是否卡住、被谁卡住、卡在哪一环。
-
SHOW FULL PROCESSLIST必须带FULL,否则Info字段会被截断,你看不到真实 SQL(比如 WordPress 插件生成的长INSERT ... VALUES (...),(...),(...)) - 普通用户只能看到自己发起的线程;若只看到 1–2 行且
State是Sleep,别以为没事——很可能是权限不足,根本看不到其他连接 - 重点关注
State和Time的组合:State = 'Sending data'且Time > 30,大概率没走索引在全表扫描;State = 'Locked'或'Waiting for table metadata lock',说明被 DDL(如插件更新时的ALTER TABLE)卡死
用 SELECT ... FROM wp_options 配合 EXPLAIN 快速验证索引有效性
WordPress 的 wp_options 表是性能黑洞高发区,尤其被缓存/SEO 类插件高频读写。直接查它 + EXPLAIN 能立刻看出是否命中索引。
- 在 phpMyAdmin 的 SQL 标签页执行:
EXPLAIN SELECT * FROM wp_options WHERE option_name = 'rewrite_rules'; - 看输出中
type列:如果是ALL或index,说明全表或全索引扫描;理想是const或ref,表示走了主键或二级索引 - 注意
key列是否为空:空 = 没用上索引;若非空但rows值极大(比如几十万),说明索引选择性差或数据倾斜 - 别用
SELECT *测——加LIMIT 1更真实,因为 WordPress 实际调用多为单行查找
监控 Com_* 状态变量估算 QPS 与查询类型分布
这不是单条 SQL 的性能,而是整体负载水位。配合 SHOW GLOBAL STATUS LIKE 'Com_%',你能快速判断是不是某类操作(如大量 UPDATE)把数据库拖垮了。
Word报告自动生成神器。自动生成专业Word文档报告,支持模板填充、目录生成、表格/图表插入、页眉页脚、多级标题、样式主题、批量邮件合并。当用户需要生成Word报告、创建合同文档、批量生成通知/证书、填充Word模板、制作商业计划书时触发。
立即学习“PHP免费学习笔记(深入)”;
- 执行两次
SHOW GLOBAL STATUS LIKE 'Com_%',间隔 5 秒,对比Com_select、Com_update、Com_insert、Com_delete的增量 - 如果
Com_update增量远高于其他项,且对应wp_options或wp_posts表,大概率是某个插件在疯狂刷写缓存或统计 - 注意
Com_change_db和Com_set_option异常高:可能有插件每请求都切换 DB 或反复设 SQL_MODE,属于低效行为 - 该方法无法替代慢日志,但胜在快——5 秒内就能定位到“是不是写操作压爆了”
KILL 卡住线程前先确认 trx_started 时间戳
很多所谓“慢查询”其实是事务没提交导致的锁等待,KILL 不解决根本问题,反而可能让状态更乱。
- 先执行:
SELECT * FROM information_schema.INNODB_TRX WHERE TIME_TO_SEC(TIMEDIFF(NOW(), trx_started)) > 60; - 看
trx_started:如果是几分钟甚至几小时前的时间,基本可判定为悬挂事务(常见于插件异常退出、PHP 脚本超时中断) - 再查
SHOW PROCESSLIST找对应ID,但别急着KILL——先看User是否为你的 WordPress 数据库用户,避免误杀系统后台连接 - 真正要
KILL的,是State为Locked且Time持续上涨、同时trx_started很老的那几个 ID
实际最难的不是执行哪条命令,而是区分哪些 State 值只是瞬时现象(比如 Writing to net 在返回 10 万行时必然出现),哪些是真卡死(比如 Waiting for table metadata lock 卡住超过 10 秒)。这需要你盯着 Time 数值是否还在动——不动,才是该出手的时候。


















