MySQL は、指定された時間を超えるクエリを記録します。指定された時間を超える SQL クエリをスロークエリと呼びます。
1. 制限時間
show variables like '%long%';
を確認すると、次のようになります:
+---------------------------------------------------+-----------+ | Variable_name | Value | +---------------------------------------------------+-----------+ | long_query_time | 10.000000 | | max_long_data_size | 1048576 | | performance_schema_events_waits_history_long_size | 10000 | +---------------------------------------------------+-----------+
クエリが long_query_time を超える場合、それは遅いクエリと呼ばれます。
2. データベースの起動時間を確認します
show status like 'uptime%';
。接続数
+---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | Uptime | 76333 | | Uptime_since_flush_status | 76333 | +---------------------------+-------+
を取得すると、
show status like 'com_Select';
5. スロー クエリの時間を設定します
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_select | 1 | +---------------+-------+
6. セーフ モードで mysql サービスを開始すると、スロー クエリ レコードが表示されます。ログに書き込まれます。
スロークエリログを有効にする
log-show-queries = D:/MySQL/Log/mysqld-slow-query.log
log-queries-not-using-indexes
説明:
スロークエリログ機能の保存場所については、ディレクトリファイルに書き込み権限が必要です。設定を使用すると、システムによってデフォルトのファイル host_name-show.log が与えられます
long_query_time
SQL 実行時間のしきい値、デフォルトは 10 秒です
long_query_time しきい値を設定した後、次の 3 つの点に注意してください。 mysql データベースは、実行時間がこの値を超えるすべての SQL ステートメントを記録しますが、実行時間が long_query_time と正確に等しい場合は記録されません。つまり、mysql のソースコードでは、log_query_time 以上ではなく、log_query_time より大きいと判断されます。
2. MySQL 5.1 以降、long_query_time はマイクロ秒単位で計算されるようになり、SQL の実行時間を正確に記録します。
3. 時間は短すぎず、長すぎず、できれば 5 ~ 10 秒にすることをお勧めします。もちろん、自分の状況に応じて決めることができます。
log-queries-not-using-indexes
実行中の SQL ステートメントがインデックスを使用しない場合、mysql データベースはこの SQL ステートメントもスロー クエリ ログ ファイルに記録します。
上記は MySQL Advanced 11 - Slow Query の内容です。さらに関連する内容については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。