mysql では、スロー クエリとは、ログに記録され、実行速度が遅い SQL ステートメントであり、「long_query_time」パラメータで設定された時間しきい値を超える SQL ステートメント クエリを指します。スロークエリはスロークエリログに記録され、どのクエリ文の実行効率が低いかを把握し、最適化を図ることができます。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
スロー クエリは、名前が示すように、実行速度が遅い SQL ステートメントをログに記録することです。これは、mysql が、設定された時間しきい値を超えるすべての SQL ステートメントを記録することを意味します。 long_query_time パラメータによって異なります。
スロークエリはスロークエリログに記録され、どのクエリ文の実行効率が低いかを把握し、最適化を図ることができます。このログは、SQL ステートメントの最適化に非常に役立ちます。
デフォルトでは、スロー クエリ ログはオフになっています。スロー クエリ ログ機能を使用するには、まずスロー クエリ ログ機能を有効にする必要があります。
show VARIABLES like '%slow_query_log%' show VARIABLES like '%slow_query_log_file%' show VARIABLES like '%long_query_time%' show VARIABLES like '%log_queries_not_using_indexes%' show VARIABLES like 'log_output'パラメータを設定しますスロークエリの:
set global long_query_time=0; ---默认10秒,这里为了演示方便设置为0 set GLOBAL slow_query_log = 1; --开启慢查询日志 set global log_output='FILE,TABLE' --项目开发中日志只能记录在日志文件中,不能记表中設定が完了したら、いくつかのリストをクエリすると、スロークエリのログ ファイルにデータがあることがわかります。 しかし、私のコンピュータでは、理由はわかりませんが、現時点では SQL 結果を正常に実行できません。更新できません;そのため、次の方法を使用できます:my.cnf を見つけて次のコンテンツを追加します
# 添加慢查询日志 log_output=file slow_query_log=on slow_query_log_file = /tmp/mysql-slow.log log_queries_not_using_indexes=on long_query_time = 13. スロー クエリ ログを確認します
mysql> SET GLOBAL slow_query_log=ON; Query OK, 0 rows affected (0.05 sec) mysql> SET GLOBAL long_query_time=0.001; Query OK, 0 rows affected (0.00 sec)ここではデモする必要があるため、時間を 0.001 秒に設定すると、実行に 0.001 秒以上かかる SQL ステートメントがログに記録されます。 tb_student テーブル内のデータをクエリする場合、SQL ステートメントと実行プロセスは次のとおりです。
mysql> USE test; Database changed mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+ 3 rows in set (0.08 sec)これに対応して、低速クエリ ログの一部は次のとおりです。
# Time: 2020-06-01T01:59:18.368780Z # User@Host: root[root] @ localhost [::1] Id: 3 # Query_time: 0.006281 Lock_time: 0.000755 Rows_sent: 2 Rows_examined: 1034 use test; SET timestamp=1590976758; SHOW VARIABLES LIKE 'slow_query%';4. スロークエリログの削除スロークエリログの削除方法は、一般ログの削除方法と同様です。 mysqladmin コマンドを使用して削除できます。手動で削除することもできます。 mysqladmin コマンドの構文は次のとおりです。
mysqladmin -uroot -p flush-logsこのコマンドを実行すると、コマンド ラインでパスワードの入力を求めるプロンプトが表示されます。正しいパスワードを入力すると削除が実行されます。新しいスロー クエリ ログは古いクエリ ログを直接上書きするため、手動で削除する必要はありません。 データベース管理者は、スロー クエリ ログを手動で削除することもできます。削除後は、MySQL サービスを再起動する必要があります。
注: このコマンドは、一般クエリ ログとスロー クエリ ログの両方で使用されます。使用する場合は注意が必要です。このコマンドを実行すると、一般クエリ ログとスロー クエリ ログが記録されます。新しいログ ファイルにのみ存在します。古いスロークエリログファイルをバックアップする必要がある場合は、まず古いログの名前を変更してから、MySQL サービスを再起動するか、mysqladmin コマンドを実行する必要があります。[関連する推奨事項:
mysql ビデオ チュートリアル ]
以上がmysqlのスロークエリとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。