ホームページ  >  記事  >  データベース  >  MySQL の通常のクエリ ログとスロー クエリ ログの違い

MySQL の通常のクエリ ログとスロー クエリ ログの違い

一个新手
一个新手オリジナル
2017-09-08 10:12:491441ブラウズ


はじめに

<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_loggeneral_log_file には、現在のスイッチ ステータスと一般クエリ ログのパスが記録されます。 general_loggeneral_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 &#39;%log%&#39;
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 &#39;long|slow|not_using_indexes&#39;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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。