場合によっては、単一のSQLクエリがすべてのサーバーの問題の原因である可能性があります。 MySQLには、低速のクエリログをキャプチャしたり、最適ではなく終了に時間がかかるクエリを特定したりする機能が組み込まれています。これにより、MySQLデータベースエンジンによる実行に定義された秒数を超えたすべての低速のクエリをログに記録できます。ファイル。遅いクエリログはアクティブ化されていないか、デフォルトでMySQLのインストールがオンになっているため、使用頻度の低いログの1つです。
遅いクエリログを有効にするには、MySQL構成ファイル(my.cnfまたはmy.ini)に次の行を追加してから、MySQLサーバーを再起動します。
log-slow-queries
または、
log-slow-queries = [path to the log file]
[ログファイルへのパス]を置き換えます MySQLにログを書き込む低速クエリログファイルへの実際のパス(オプションの値)を使用します。
または、 –log-slow-queries [=file_name]でmysqldを開始することもできます 遅いクエリログを有効にするオプション。どちらの構文でも、ログファイル名が指定されていない場合、デフォルトの名前は host_nameです。 -slow.log、MySQLデータファイルディレクトリに保存されます。ファイル名が指定されているが、絶対パス名として指定されていない場合、サーバーはファイルをデータディレクトリにも書き込みます。
遅いクエリログを有効にした後、MySQLは、 long_query_time を超えるすべてのSQLステートメントを含むログファイルを作成、キャプチャ、およびログに記録します。 実行秒数。デフォルトでは10秒に設定されています。 。初期テーブルロックを取得する時間は、実行時間としてカウントされません。 mysqldは、実行後、すべてのロックが解放された後、低速クエリログにステートメントを書き込むため、ログの順序が実行順序と異なる場合があります。
次に、ログファイル内のすべての低速SQLクエリを調べてから、SQLステートメントを最適化するために必要な手順を実行できます。遅いクエリログは、クエリが完了した時間、クエリの実行にかかった時間、ロックを保護するのにかかった時間、結果として返送された行の数、調査された行の数を示します。結果、使用されたデータベース、および実際のクエリ自体。ただし、ログに含まれるSQLクエリはすでに最適である可能性がありますが、微調整が必要な実際の低速ステートメントによってシステムリソースが使い果たされているため、実行速度が遅いことに注意してください。