[MySQL]実行が遅いSQL命令(スロークエリ)を見つける

[MySQL]実行が遅いSQL命令(スロークエリ)を見つける

スロークエリーの出力

ページの表示が遅いとき、もっとも多い原因はsqlです。今回は実行が遅いsqlを見つける方法であるご紹介します。

Advertisement

スロークエリーの出力設定

mysqlの設定ファイルであるmy.cnfにスロークエリー(実行が遅いsql)を出力する設定を行います。設定ファイルのパスは、/etc/my.cnfであることが多いです。

[mysqld]の項目の末尾に設定を追加します。

long_query_time 実行時間が何秒以上を出力対象にするか
log-slow-queries ログファイルの出力パス

※long_query_timeは、mysql5.1から1秒未満(0.1など)の設定が可能です。

mysql設定の変更後にmysqlの再起動を行う必要があります。

 

実行する全てのsql命令を出力する

スロークエリーの設定を応用して、実行した全てのsqlをログ出力することができます。設定方法は「long_query_time = 0」を設定するだけです。主な利用用途として、開発に携わっていないWeb開発プロジェクトのページの表示速度が遅いときの原因究明に重宝します。

「long_query_time = 0」を設定したときのログを転記します。

 

スロークエリ―の設定確認

slow_queryが有効になっているかの確認方法を記載します。設定後の念のための確認、またはslow_queryを設定したはずなのに正常に動作していないのでは?と感じたときにチェックして下さい。
※スロークエリ―の設定確認を行うときはroot権限が必要です。

「slow_query_log」が「ON」のとき、「slow_query_log_file」にログが出力されます。

実行時間が「long_query_time」の設定値を超えるクエリがスロークエリとして出力されます。

Advertisement

インフラカテゴリの最新記事