GoDaddy ヘルプ

このページをご利用いただけるよう、最善を尽くして翻訳しております。 英語のページもご用意しています。

遅いMySQLクエリを確認する

スロークエリログを有効にしましたログを確認できます。ロギングを有効にしていない場合は、こちらの手順を参照してください。

ログの分析

ログの場所:
/var/log/slow-queries.log
注意:この場所にログが見つからない場合は、my.cnfのエントリを確認し、変更後にMySQLが再起動されたことを確認してください。
形式:
#時間:210905 6:33:11#User @ Host:dbuser [dbname] @ hostname [1.2.3.4]#Query_time:12.116250 Lock_time:0.000035 Rows_sent:0 Rows_examined:201565 use dbname; SETタイムスタンプ= 1409898791; ...ここで低速クエリ...

上記の形式のエントリが数百とまではいかなくても数十ある場合、ログが膨大になる可能性があります。ログを読みやすくするには、 mysqldumpslowを使用してログを解析します。

mysqldumpslow -r -a /var/log/mysql/mysqld.slow.log
出力には、時間クエリなどの重要な情報が含まれます。
Count:2 Time = 20.54s(41s)Lock = 0.02s(0s)Rows = 12547802(0)、dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id = '214380' ORDER BY site_id DESC LIMIT 0,2 Count: 1 Time = 21.74s(21s)Lock = 0.01s(0s)Rows = 12547802(0)、dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id = '214380' ORDER BY site_id DESC LIMIT 0,2 Count:1 Time = 23.86s(23s)Lock = 0.20s(0s)Rows = 12547802(0)、dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id = '214380' ORDER BY site_id DESC LIMIT 0,2

上記の例を見ると、実行に20〜24秒かかるクエリが1つあります。これにより、サイトの読み込みに時間がかかる、タイムアウトエラーが発生するなど、問題が発生します。クエリは12,547,802行を調べています。 1200万行を超えるテーブルで大きなクエリ(select *)を実行すると、ユーザーエクスペリエンスが低下する可能性があります。クエリを最適化する(「コーヒーテーブル」を選択する)か、検査する行を減らす(古いデータをアーカイブする)と、クエリの速度が向上します。

ログファイルが大きい場合は、 mysqldumpslowを実行し、出力をファイルに保存します。これにより、 grepfindなどの他のファイル操作ツールで確認しやすくなります。

mysqldumpslow -r -a /var/log/slow-queries.log > slow.log.parsed

次のステップ

遅いクエリログを確認すると、修正が必要な問題のあるクエリを把握できます。高いリソースを使用するMySQLでサイトの実行速度がまだ遅い場合、サーバーのリソースをより有効に活用するためにMySQLを最適化する必要があるかもしれません。

ログの処理が完了したら、 MySQLスロークエリログを無効にしてください。ロギングを有効にしておくと、MySQLリソースが不必要に消費され、潜在的にディスクが一杯になります(クエリに問題があるため)。

GoDaddyホスティングサービス

弊社のサーバーエキスパートがMySQLのスロークエリロギングを有効/無効にし、MySQLを最適化することができます。このサービスの詳細については、 GoDaddyガイドお手伝いします。

関連情報

GoDaddyが提供するホスティングサービスの詳細については、ホスティングサービスのメニュー