2026年10月3日
2026年10月3日
WordPressのMySQL Slow Query最適化ガイド
はじめに
ウェブサイトのパフォーマンスは、ユーザーエクスペリエンスと検索エンジンランキングに大きな影響を与えます。WordPressをベースとする多くのウェブサイトでは、データベースのパフォーマンスが全体的なシステムパフォーマンスに大きく関与します。MySQL Slow Queryログは、特定のクエリが長時間処理される原因を見つけ出し、問題解決に役立つ重要なツールです。
この記事では、WordPressサイトで発生するMySQL Slow Queryを最適化するためのステップを解説します。データベースのパフォーマンスを向上させることで、ウェブサイトのレスポンスタイムを改善し、ユーザーからのアクセスストレスを軽減することができます。
症状・背景
このテーマが必要になる主な場面:
- ユーザーから「ページが重い」というフィードバックを受け取った場合
- Google PageSpeed Insightsなどのツールでパフォーマンススコアが低いと判定されたとき
- WordPress管理画面やサイトの表示速度が遅く、ユーザーからの問い合わせが増えたとき
- データベースエラーログに「Slow query」に関するエラーが多い場合
手順・設定方法
ステップ1: MySQL Slow Queryログを有効にする
# MySQLの設定ファイル(my.cnf)を開く
sudo nano /etc/mysql/my.cnf
# [mysqld]セクションに以下の行を追加または修正します
slow_query_log = 1
long_query_time = 2
log_output = FILE
slow_query_log_file = /var/log/mysql/slow.log
ステップ2: MySQL Slow Queryログを確認する
# 指定されたファイルにSlow Queryの情報を追加しているか確認します
tail -f /var/log/mysql/slow.log
ステップ3: 最も遅いクエリを特定する
# MySQLTuner Perlスクリプトを使用してパフォーマンス分析を行う
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl -h localhost -u root -p
# ログファイルから最も遅いクエリを抽出するSQLクエリを作成します
SELECT * FROM (SELECT substring_index(query,' ',1) AS sql_text, count(*) as cnt, total_time, min_time, avg_time, max_time, sum_lock_time/sum(calls) AS `avg_lock_time`, rows_sent, rows_examined, DIGITS(sum_errors) AS errors, last_errno, last_error FROM slow_query_log GROUP BY query ORDER BY sum_timer_wait DESC LIMIT 10) t
ステップ4: クエリの最適化を行う
# 具体的なクエリを分析し、インデックスやJOINの使用を改善するなどして最適化します
EXPLAIN SELECT * FROM wp_posts WHERE post_date < '2019-01-01' AND post_status = 'publish';
注意事項
- MySQL Slow Queryログは、データベースサーバーの負荷に影響を与える可能性があります。そのため、必要に応じて有効化し、不要なときは停止することを忘れないでください。
- データベーステーブルのインデックスを適切に設定することで、クエリパフォーマンスが大幅に向上することがあります。
- クエリ最適化には専門的な知識が必要となる場合があります。必要であれば、データベース管理システムの専門家に相談することをお勧めします。
- パフォーマンス監視ツールを使用することで、定期的にサイトパフォーマンスをチェックし、最適化を継続することが重要です。
まとめ
1. MySQL Slow Queryログの有効化: MySQLの設定ファイルを編集してSlow Queryログを有効にします。
2. ログ確認: ログファイルを開き、最も遅いクエリを探し出します。
3. 最適化: 低パフォーマンスの原因となるクエリについて分析を行い、インデックスやJOINの使用を改善して最適化を行います。
4. 定期的なチェック: パフォーマンス監視ツールを使用して定期的にサイトパフォーマンスをチェックします。
関連記事: