10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb
HTML下载(TGZ)- 7.2 mb
HTML下载(邮政编码)- 7.2 mb


5.2.5スロクエリログ

スロクエリログは,実行に要した時間がlong_query_time秒を超え,少なくともmin_examined_row_limit行を検査する必要があったSQLステトメントで構成されます。long_query_timeの最小値およびデフォルト値は,それぞれ0および10です。値はマ邮箱クロ秒の精度まで指定できます。ファereplicationルへのロギングの場合,時間はマereplicationクロ秒の部分も含めて書き込まれます。テブルへのロギングの場合,時間の整数部のみ書き込まれ,マ。

デフォルトでは,管理ステートメントはログに記録されず,参照にインデックスを使用しないクエリーも記録されません。あとで説明するように,この動作はlog_slow_admin_statementsおよびlog_queries_not_using_indexesを使用して変更することができます。

初期ロックを取得する時間は実行時間として計算されません。mysqldがスロークエリーログにステートメントを書き込むのは,ステートメントが実行されて,すべてのロックが解放されたあとであるため,ログの順序が実行順と異なる場合があります。

デフォルトでは,スロクエリログは無効になっています。初期のスロクエリログ状態を明示的に指定するには,——slow_query_log [= {0 | 1}]を使用します。引数を指定しないか,引数が1の場合,——slow_query_logによってログが有効になります。引数が0の場合,このオプションによってログが無効になります。ログファル名を指定するには,——slow_query_log_file =file_nameを使用します。ログの出力先を指定するには,(セクション5.2.1 "一般クエリログおよびスロクエリログの出力先の選択"で説明されている)——日志输出を使用します。

スロクエリログファルの名前を指定しない場合,デフォルト名はhost_name-slow.logです。サーバーは,別のディレクトリを指定する絶対パス名が指定されないかぎり,データディレクトリ内にファイルを作成します。

実行時にスロークエリーログを無効化または有効化したり,ログファイル名を変更したりするには,グローバルなslow_query_logおよびslow_query_log_fileシステム変数を使用します。slow_query_logを0(または)にすると,ログが無効化し,1(またはで有効化します。ログファルの名前を指定するには,slow_query_log_fileを指定します。ログファereplicationルがすでに開いている場合,ログファereplicationルが閉じて新しいファereplicationルが開きます。

スロクエリログが有効な場合,サバは——日志输出オプションまたはlog_outputシステム変数によって指定されたあらゆる出力先に出力を書き込みます。ログを有効にすると,サ。ただし,文件ログの出力先が選択されないかぎり、ファ。出力先が没有一个の場合,スロクエリ。ログ出力先の値に文件が含まれていない場合、ログファ以及ル名を設定してもロギングへの影響はありません。

——log-short-formatオプションを使用する場合,サーバーによってスロークエリーログ(およびバイナリログ)に書き込まれる情報が少なくなります。

スロクエリログに書き込まれるステトメントに低速の管理ステトメントを含めるには,log_slow_admin_statementsシステム変数を使用します。管理ステトメントには,ALTER TABLE分析表检查表创建索引指数下降优化表,および修理表が含まれます。

スロークエリーログに書き込まれるステートメントに,行参照についてインデックスを使用しないクエリーを含めるには,log_queries_not_using_indexesシステム変数を有効にします。そのようなクエリがログに記録されると,スロログが急速に増大することがあります。log_throttle_queries_not_using_indexesシステム変数を設定することによって,これらのクエリに速度制限を課すことが可能です。デフォルトでは,この変数は0で,制限がないことを意味します。正の値を指定すると、ンデックスを使用しないクエリ。そのような最初のクエリーによって60秒間のウィンドウが開き,その期間内でサーバーはクエリーを所定の制限までログに記録し,そのあと,追加のクエリーを抑制します。ウィンドウが終了したときに抑制されたクエリーが存在する場合,サーバーはクエリーが存在した数と,それらに要した集計時間とを示すサマリーをログに記録します。インデックスを使用しない次のクエリーをサーバーがログに記録するとき,別の60秒間のウィンドウが開始されます。

サーバーは,スロークエリーログにクエリーを書き込むかどうかを判断するために,制御パラメータを次の順序で使用します。

  1. クエリは管理ステトメントでないか,log_slow_admin_statementsが有効になっている必要がある。

  2. クエリに少なくともlong_query_time秒かかっているか,log_queries_not_using_indexesが有効であって,クエリンデックスを使用していない。

  3. クエリは少なくともmin_examined_row_limit行を検査している必要がある。

  4. クエリは,log_throttle_queries_not_using_indexes設定によって抑制されていてはならない。

サーバーは,クエリーキャッシュによって処理されるクエリーをスロークエリーログに書き込まず,テーブルに0行または1行しかないことからインデックスがあることのメリットがないようなクエリーもスロークエリーログに書き込みません。

デフォルトでは,レプリケーションスレーブはレプリケーションされたクエリーをスロークエリーログに書き込みません。これを変更するには,log_slow_slave_statementsシステム変数を使用します。

MySQL 5.6.3以降では,スロークエリーログに書き込まれるステートメントのパスワードはサーバーによって書き換えられ,文字どおりに平文で表示されることはありません。MySQL 5.6.3より前では,ステートメント内のパスワードは書き換えされないため,スロークエリーログを保護するようにしてください。セクション6.1.2.3 "パスワドおよびロギング"を参照してください。

スロークエリーログは,実行に長い時間がかかっているため最適化の候補となるクエリーを見つけるために使用できます。ただし,長いスロクエリ,ログを調査することは,難しいタスクになる場合があります。これを簡単にするために,mysqldumpslowコマンドを使用してスロークエリーログファイルを処理し,ログに表示されるクエリーを要約することができます。セクション4.6.9 "mysqldumpslow—スロクエリログファルの要約”を参照してください。