WordPress突然变慢,打开一个页面要3-5秒——进服务器一看,MySQL的CPU占用率100%。这时候需要打开慢查询日志,找到哪些SQL在拖后腿。
一、开启慢查询日志
# my.cnf / my.ini
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1 # 超过1秒的查询记录重启MySQL后生效。然后用工具分析慢查询日志:
mysqldumpslow /var/log/mysql/slow.log # MySQL自带工具
# 或使用Percona Toolkit的pt-query-digest(功能更强)二、常见慢查询及修复
| 问题 | 典型SQL特征 | 修复方法 |
|---|---|---|
| 全表扫描 | WHERE条件没有对应索引 | 加索引:CREATE INDEX idx ON table(column) |
| JOIN效率低 | 多表JOIN时没索引 | 在JOIN的关联字段上加索引 |
| WordPress Revision过多 | wp_posts表超大 | 限制版本数:define(‘WP_POST_REVISIONS’, 5) |
| Transient过期堆积 | wp_options表autoload=yes行太多 | 清理过期Transient,减少autoload |
三、WordPress常用优化SQL
-- 清理修订版本
DELETE FROM wp_posts WHERE post_type = 'revision';
-- 清理垃圾评论
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- 优化表
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_comments;总结
MySQL慢查询优化的基本流程:开启慢查询日志 → 用mysqldumpslow分析 → 给高频慢查询的WHERE/JOIN字段加索引 → 清理WordPress历史垃圾数据。90%的慢查询通过加索引就能解决。更多运维工具看极跃IP资源导航。






