1. MySQL スロー クエリ ログとは
MySQL スロー クエリ ログは、MySQL に付属するパフォーマンス分析ツールであり、次のクエリを記録するために使用されます。指定された時間しきい値 クエリリクエスト。低速クエリ ログには、所要時間、実行数、実行計画など、各クエリのさまざまなパフォーマンス指標が記録されます。開発者はこれらのメトリクスを使用して、最適化が必要なクエリを特定して効率を向上させ、適切なアクションを実行できます。
デフォルトでは、MySQL のスロー クエリ ログは通常有効になっていないため、有効にするには手動構成が必要です。スロー ログのクエリは、MySQL 構成ファイル (my.cnf) でパラメータを設定することで有効にできます。以下は、スロー ログをクエリするための設定例です:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
log_queries_not_using_indexes = 1
long_query_time = 2
このうち、slow_query_log パラメータはスロー クエリ ログを有効にするために使用され、slow_query_log_file パラメータはスロー クエリ ログ ファイルの場所を指定し、log_queries_not_using_indexes パラメータは未使用のログを記録するために使用されます。低速クエリ インデックスの情報、および long_query_time パラメータ クエリのタイムアウトを秒単位で指定するために使用されます。
2. MySQL スロー クエリ ログを有効にする方法
MySQL 5.7 以降では、デフォルトでスロー クエリ ログが有効になります。特に MySQL 5.6 や 5.5 などの古いバージョンの MySQL の場合、クエリ低速ログ機能を有効にするには手動構成が必要です。 MySQL クエリのスロー ログを有効にする詳細な手順は次のとおりです。
MySQL 構成ファイルを開く
デフォルトでは、MySQL 構成ファイルは次のとおりです。 Linux システムの場合、パスは /etc/my.cnf です。 Windows システムでは、構成ファイルは通常、C:Program FilesMySQLMySQL Servermy.ini または C:ProgramDataMySQLMySQL Servermy.ini にあります。お気に入りのエディタでファイルを開きます。
slow_query_log = 0
slow_query_log = 1
throw_query_log_file = /var/log/mysql/mysql-slow.log
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 10
long_query_time = 2
log_queries_not_using_indexes = 1
sudo systemctl restart mysqld
3. MySQL スロー クエリ ログを表示する方法
MySQL スロー クエリ ログを有効にすると、スロー クエリ ログは自動的にクエリ情報を記録し、指定されたスロークエリログファイル。次のコマンドを使用してスロー クエリ ログを表示できます:
sudo tail -n 100 /var/log/mysql/mysql-slow.log
このコマンドを使用して最新の 100 件を表示しますスロークエリログ記録。表示する行数を好みに応じて変更することもできます。出力には、低速クエリの実行に必要な時間と、クエリに含まれるすべてのデータ テーブルとサブクエリが含まれます。
日付フィルタリングによって遅いログをクエリする必要がある場合は、以下に示すように、grep と awk を使用して Linux 上のログをフィルタリングできます:
grep "21-Jun-2022" /var /log/ mysql/mysql-slow.log | awk '{print substr($2,0,length($2)-1)" "$3$4" "$5}' |less
このコマンドは次のように出力します。 2022 年 6 月 毎月 21 日のスロー クエリ ログを含むすべてのタイムスタンプ。
4. MySQL クエリの遅いログを分析および最適化する方法MySQL クエリの遅いログを十分に収集した後、それらを分析して最適化する必要があるクエリを判断できます。 . .クエリのパフォーマンスを分析および最適化するためのベスト プラクティスをいくつか示します。
yum インストール https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install percona-toolkit遅いログの解析とクエリ
次のコマンドを使用すると、pt-query-digest を使用して遅いログを解析し、クエリを実行できます。
pt-query-digest /var/log/mysql/mysql-slow.log > throw-query-analysis.out
分析クエリの遅いログ
pt-query-digest を使用して、スロー クエリ ログの詳細な分析レポートを取得します。最も頻繁に発生し、タイムアウトが最も長いクエリを検索し、最適化が必要なクエリを特定できます。
インデックス フィールドの使用
MySQL クエリのスロー ログには、インデックスを正常に使用できなかったすべてのクエリが記録されます。この情報を使用して判断できます。適切なフィールド インデックスを使用してクエリを高速化します。 MySQL にインデックスを追加すると、クエリのパフォーマンスを大幅に最適化できます。追加するインデックスが多すぎると、クエリ リクエストと更新操作のコストが増加する可能性があるため、クエリのパフォーマンスが低下する可能性があることに注意することが重要です。
クエリ ステートメントの最適化
クエリ スロー ログにより、どのクエリを最適化する必要があるかがわかります。実行時間が設定されたしきい値を超えると、クエリはログ ファイルに記録されます。クエリ ステートメントを確認し、別のクエリ ステートメントを使用して実行速度を最適化することができます。
キャッシュ メカニズムを使用する
キャッシュ メカニズムにより、クエリ速度が大幅に向上します。クエリ結果がすでにキャッシュに保存されている場合は、クエリの実行とリソースのオーバーヘッドを回避し、結果を直接返すことができます。キャッシュ メカニズムは、Redis や Memcached などのキャッシュ プロバイダーを使用して実装できます。
MySQL サーバー パラメーターの調整
MySQL サーバーのパフォーマンスは、さまざまなパラメーターを調整してデータベース全体を最適化することで最適化できます。これらのパラメータには、MySQL キャッシュ サイズ、接続制限、クエリ タイムアウトなどが含まれます。これらのパラメータを調整することで、データベース サービスのパフォーマンスを特定のクエリに対して最適化できます。
以上がmysqlクエリの遅いログを有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。