ホームページ  >  記事  >  データベース  >  mysql が時間のかかる SQL ステートメントのインスタンスを記録する方法の詳細な説明

mysql が時間のかかる SQL ステートメントのインスタンスを記録する方法の詳細な説明

黄舟
黄舟オリジナル
2017-09-02 14:04:111785ブラウズ

この記事では、時間のかかる SQL の記録に関する関連情報を中心に紹介します。ここでは、必要な方の参考になれば幸いです

。 mysql は、最適化分析のために時間のかかる SQL やインデックスを使用しない SQL を低速ログに記録できます。

1. mysql スロー クエリ ログを有効にする:

mysql スロー クエリ ログは、現在のプログラムでリソースを消費する SQL ステートメントを分析するのに非常に役立ちます。 mysql とは何ですか?

mysql> show variables like 'log_slow_queries';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| log_slow_queries | OFF | 
+------------------+-------+
1 row in set (0.01 sec)

mysql>

これは、スローログ機能が有効になっていないことを意味し、これを有効にするには、mysql 設定ファイル「[mysqld]」に次の 2 つのパラメータを追加する必要があります。

long_query_time=1
log-slow-queries=/var/mysql/logs/slow.log

説明


long_query_time

このパラメータはスロークエリの測定時間を表します。単位は秒、最小値は1、デフォルト値は10です。実行時間がlong_query_timeを超えるSQL文は、スロークエリログに記録されます

log-slow-queries[=file_name]

file_name パラメータが指定されている場合、デフォルト値は host_name-slow.log です。 file_name で設定されたファイルにスロー クエリ ログを記録します。 file_name が相対パスを指定すると、mysql はログを mysql のデータ ディレクトリに記録します。このパラメータは設定ファイルにのみ追加でき、コマンド ラインでは実行できません。

2. 未使用のインデックスクエリをスローログに記録する設定

mysql 起動設定ファイルまたはコマンドラインパラメータに「log_queries_not_using_indexes」パラメータを追加して、未使用のインデックスクエリステートメントをスローログ Inside に追加します。
サンプルは以下の通りです:


[root@localhost mysqlsla-2.03]# more /etc/my.cnf 
[mysqld]
datadir=/var/lib/mysql
log_bin=/tmp/mysql/bin-log/mysql-bin.log
log_bin=ON
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1


log_slow_queries=/tmp/127_slow.log
long_query_time=1
log_queries_not_using_indexes

.......

mysql再起動後の確認結果は以下の通りです:


mysql> show variables like 'log_slow_queries';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| log_slow_queries | ON | 
+------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'long_query_time';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| long_query_time | 2  | 
+-----------------+-------+
1 row in set (0.00 sec)

mysql>

以上がmysql が時間のかかる SQL ステートメントのインスタンスを記録する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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