ホームページ >データベース >mysql チュートリアル >MySQL の通常のクエリ ログとスロー クエリ ログの違い
<br/>
以前の共有では、MySQL ログ タイプはエラー ログ (error_log)、クエリ ログ (query_log)、バイナリ ログ (binary_log) の 3 つのタイプに分類できると述べました。 error_log の使用法については、MySQL ログ error_log を参照してください。この記事では主に、general_log と throw_query_log の原理と使用法を紹介します。
一般クエリ ログ (general_log) は、主に、各クライアントがデータベースに接続する際、およびデータベース上で実行される SQL ステートメントの関連情報をクエリするために使用されます。設定方法は次のとおりです。
1.一般クエリ ログが有効かどうかを確認し、パスを保存します:
mysql> show variables like "general_log%"; +------------------+------------------------------+| Variable_name | Value | +------------------+------------------------------+| general_log | OFF | | general_log_file | /var/lib/mysql/localhost.log | +------------------+------------------------------+ 2 rows in set (0.00 sec)
画面出力 general_log
と general_log_file
には、現在のスイッチ ステータスと一般クエリ ログのパスが記録されます。 general_log
和general_log_file
记录了当前通用查询日志的开关状态与路径。
2、开启通用查询日志
set global general_log = ON
查询是否成功:
mysql> show variables like "general_log%"; +------------------+------------------------------+| Variable_name | Value | +------------------+------------------------------+| general_log | ON | | general_log_file | /var/lib/mysql/localhost.log | +------------------+------------------------------+ 2 rows in set (0.00 sec)
成功。
退出一下看有没有生成并且正确记录:
[root@localhost ~]# cat /var/lib/mysql/localhost.log /usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 2017-08-14T09:33:11.364650Z 5 Quit 2017-08-14T09:33:20.671113Z 6 Connect root@localhost on using Socket 2017-08-14T09:33:20.671323Z 6 Query select @@version_comment limit 1 2017-08-14T09:33:22.964610Z 6 Query show variables like '%log%' 2017-08-14T09:33:24.574224Z 6 Quit
成功,并且我们可以看到,log不仅记录了SQL命令,同时也包括了执行时间、Id、命令类型等相关数据
慢查询日志记录了SQL语句时间超过了预设的long_query_time的语句,在数据量较大的情况下,可以看看慢查询日志中有哪些语句需要进行优化。
1、慢查询日志的配置
慢查询日志的配置可以在数据库配置文件my.cnf
中查到:
[root@localhost ~]# cat /etc/my.cnf | grep -E 'long|slow|not_using_indexes'long_query_time = 1#log-slow-queries = /var/log/mysql/slow.loglog_queries_not_using_indexes
可以看到:
long_query_time = 1
的意思是SQL语句执行时间超过1s的,对其进行记录; log-slow-queries = /var/log/mysql/slow.log
是对慢查询日志路径的设置; log_queries_not_using_indexes
2. 一般的なクエリ ログをオンにします
set slow_query_log = ONクエリが成功したかどうか:
[root@localhost ~]# cat /var/lib/mysql/localhost-slow.log /usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument成功。 終了して、正しく生成され記録されているかどうかを確認します:
rrreee
成功。ログには SQL コマンドが記録されるだけでなく、実行時間、ID、コマンド タイプ、その他の関連データも含まれていることがわかります🎜🎜🎜遅いクエリログ 🎜🎜🎜 スロー クエリ ログには、SQL ステートメント時間が事前設定された long_query_time を超えるステートメントが記録され、データ量が多い場合、スロー クエリ ログ内のどのステートメントを最適化する必要があるかを確認できます。 🎜🎜🎜1. スロークエリログの構成 🎜🎜🎜スロークエリログの構成は、データベース構成ファイルmy.cnf
にあります: 🎜rrreee🎜 参照できます: 🎜🎜 long_query_time = 1
は、SQL ステートメントの実行時間が 1 秒を超えた場合に記録されることを意味します 🎜log-slow-queries = /var/log/mysql/slow.log
遅いクエリの場合 ログ パスの設定; 🎜log_queries_not_using_indexes
はインデックスを使用しないステートメントを意味し、記録の対象を減らすことができます🎜🎜 実際の設定は一般的なクエリ ログと同じです。低速クエリ ログを有効にするための mysql インタラクティブ インターフェイス:🎜 rrreee🎜🎜2. クエリが成功したかどうかを確認します🎜🎜rrreee🎜。 🎜🎜ただし、slow_query_log にはユーザーのアクセス許可とパスワードに関連するステートメントが記録される場合があるため、スロー クエリ ログ ファイルを使用する場合は、ログの安全な保管に注意してください。 🎜以上がMySQL の通常のクエリ ログとスロー クエリ ログの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。