MySQL慢查询分析与优化:用慢查询日志给WordPress数据库提速

开启日志、分析慢SQL、加索引三步走
发布于
6

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资源导航

常见问题(FAQ)

MySQL慢查询日志怎么开启和分析?
先在my.cnf开启slow_query_log并设置long_query_time=1(超过1秒记录),重启MySQL。然后用mysqldumpslow或pt-query-digest分析日志,找出执行最慢和最频繁的SQL。
WordPress数据库慢查询最常见的原因?
WordPress最常见慢查询:wp_posts表revision太多(限制WP_POST_REVISIONS为5)、wp_options表autoload=yes行堆积(清理过期Transient)、wp_postmeta表缺少索引。
分析MySQL慢查询需要装额外工具吗?
不用,MySQL 5.6+原生支持慢查询日志,mysqldumpslow是MySQL自带的。pt-query-digest是Percona Toolkit的工具,分析更详细但不是必需。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600