この記事では、時間のかかる 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文は、スロークエリログに記録されます
file_name パラメータが指定されている場合、デフォルト値は host_name-slow.log です。 file_name で設定されたファイルにスロー クエリ ログを記録します。 file_name が相対パスを指定すると、mysql はログを mysql のデータ ディレクトリに記録します。このパラメータは設定ファイルにのみ追加でき、コマンド ラインでは実行できません。
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 サイトの他の関連記事を参照してください。