スロー クエリ
ログの内容は、long_query_time
秒より実行に時間がかかる SQL
ステートメントすべてが入ります。最初のテーブル
ロックを取得するまでの時間は、実行時間としてはカウントしていません。すべてのステートメントを実行し、すべてのロックをリリースした後に、mysqld
で、ステートメントをスロー クエリ
ログとして書き込むため、ログ順は実行順とは異なることがあります。最低限値は
1 で、long_query_time
のデフォルト値
(最大値) は 10です。
MySQL 5.1.6 以降、スロー クエリ
ログを有効化するには、mysqld を
--log-slow-queries[=
オプションで起動します。必要に応じて、file_name
]--log-output
オプションを使用して、ログの出力先を指定します。(項4.11.1. 「一般クエリとスロー クエリのログ出力先の選択」
を参照のこと。) MySQL 5.1.6 より前は、スロー
クエリ ログの出力先はファイルです。スロー
クエリ ログ
ファイルを有効化するには、--log-slow-queries[=
オプションを使用します。
file_name
]
--log-slow-queries
に
file_name
値を指定しない場合、デフォルト名は、
というデータ
ディレクトリのファイル名になります。絶対パスでファイル名を指定しない場合、このファイルはデータ
ディレクトリに置かれます。
host_name
-slow.log
MySQL 5.1.12 以降、--log-slow-queries
を指定する場合、--slow-query-log
オプションで最初のスロー クエリ
ログ状態を指定することも可能です。このオプションで、引数なし、または
値を 0
にすると、ログが無効化します。省略する、または値を
1
とすると、ログが有効化します。--log--slow-queries
を指定しない場合、--slow-query-log
には何の影響もありません。
slow_query_log
および
slow_query_log_file
のグローバル
システム変数で、スロー クエリ
ログのランタイム制御ができます。slow_query_log
を 0 (または OFF
)
にすると、ログが無効化し、1 (または
ON
)
で有効化します。general_log_file
を指定して、ログ
ファイルの名前を指定することもできます。ログ
ファイルがすでに開いている場合は、それを閉じて、新規ファイルを開けます。
スロー クエリ
ログを有効化した場合、出力の書き込み先は
--log-output
オプション、または
log_output
環境変数で指定します。ノート: 出力先が
NONE
である場合、スロー
ログを有効化していても、出力書き込みはできません。同様に、ログ出力先の値に
FILE
がない場合は、ログ効果はありません。
スロー クエリ ログには、実行に時間がかかるクエリが入るため、最適化の対象になります。しかし、時間がかかるスロー クエリ ログの検査は手間がかかります。ここで、mysqldumpslow コマンドを使用してスロー クエリ ログを処理することで、そのクエリをログに概括表示します。mysqldumpslow --help を使用して、このコマンドに関するサポートを探してください。
MySQL 5.1
では、インデックスを使用しないクエリは、--log-queries-not-using-indexes
オプションで指定すると、スロー クエリ
ログで記録するようになります。詳細は
項4.2.2. 「コマンド オプション」 を参照してください。
MySQL Enterprise. 過剰なテーブル スキャンはインデックスの最適化に悪影響を与える、またはインデックスを損失する原因になります。MySQL Network Monitoring and Advisory Service では、専門家とともにインデックスに関する事前対策、解決策を提供しています。詳細は http://www-jp.mysql.com/products/enterprise/advisors.html を参照してください。
MySQL 5.1 では、スロー クエリ
ログに対して、--log-slow-admin-statements
というサーバ オプションで、OPTIMIZE
TABLE
、ANALYZE
TABLE
、ALTER TABLE
など、時間がかかる管理ステートメントのロギング要求を有効化します。
クエリ キャッシュで扱うクエリは、スロー クエリ ログには付加しません。テーブルのレコードがない、または 1 つだけであるときは、インデックスで管理する必要がないため、これもスロー クエリ ログには入りません。