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' --项目开发中日志只能记录在日志文件中,不能记表中
# 添加慢查询日志 log_output=file slow_query_log=on slow_query_log_file = /tmp/mysql-slow.log log_queries_not_using_indexes=on long_query_time = 1
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)
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%';
mysqladmin -uroot -p flush-logs
注: このコマンドは、一般クエリ ログとスロー クエリ ログの両方で使用されます。使用する場合は注意が必要です。このコマンドを実行すると、一般クエリ ログとスロー クエリ ログが記録されます。新しいログ ファイルにのみ存在します。古いスロークエリログファイルをバックアップする必要がある場合は、まず古いログの名前を変更してから、MySQL サービスを再起動するか、mysqladmin コマンドを実行する必要があります。[関連する推奨事項:
mysql ビデオ チュートリアル ]
以上がmysqlのスロークエリとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。