ホームページ  >  記事  >  データベース  >  mysqlクエリの遅いログを有効にする方法

mysqlクエリの遅いログを有効にする方法

WBOY
WBOY転載
2023-05-27 12:31:143717ブラウズ

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 クエリのスロー ログを有効にする詳細な手順は次のとおりです。

  1. MySQL 構成ファイルを開く

デフォルトでは、MySQL 構成ファイルは次のとおりです。 Linux システムの場合、パスは /etc/my.cnf です。 Windows システムでは、構成ファイルは通常、C:Program FilesMySQLMySQL Servermy.ini または C:ProgramDataMySQLMySQL Servermy.ini にあります。お気に入りのエディタでファイルを開きます。

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

  2. #構成ファイルで次の行を見つけます:

slow_query_log = 0

この行からコメント記号 # を削除し、値を 1 に変更します。

slow_query_log = 1

    スロー ログ ファイルのパスを指定します。
  1. 次の行を見つけます:

throw_query_log_file = /var/log/mysql/mysql-slow.log

行からコメント記号 # を削除し、ファイル パスを目的のパスに変更します。

slow_query_log_file = /var/log/mysql/mysql-slow.log

    クエリ タイムアウトの設定
  1. 次を見つけます行:

long_query_time = 10

この行からコメント記号 # を削除し、値を目的のクエリ タイムアウトしきい値 (秒単位) に変更します。

long_query_time = 2

    インデックス未使用情報のスイッチを構成します
  1. 次の行を見つけます:

    log_queries_not_using_indexes = 0
  • この行からコメント記号 # を削除し、値を 1 に変更して、ロギング操作で未使用の低速クエリ インデックスを有効にします。

log_queries_not_using_indexes = 1

    設定ファイルを保存して閉じます
  1. 設定ファイルが保存されたかどうかを確認して、ファイル。

    MySQL サービスの再起動
  1. 次のコマンドを使用して MySQL サービスを再起動します:

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 クエリの遅いログを十分に収集した後、それらを分析して最適化する必要があるクエリを判断できます。 . .クエリのパフォーマンスを分析および最適化するためのベスト プラクティスをいくつか示します。

    pt-query-digest を使用したクエリの遅いログの解析
  1. pt -query- Digest は、MySQL クエリの遅いログを分析し、そこで発生する問題を最適化するのに役立つオープン ソース ソフトウェアです。 pt-query-digest をインストールして使用する手順は次のとおりです。

    Percona Toolkit のインストール
  • CentOS 7 では、次を使用してインストールできます。次のコマンド。

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 を使用して、スロー クエリ ログの詳細な分析レポートを取得します。最も頻繁に発生し、タイムアウトが最も長いクエリを検索し、最適化が必要なクエリを特定できます。

  1. インデックス フィールドの使用

MySQL クエリのスロー ログには、インデックスを正常に使用できなかったすべてのクエリが記録されます。この情報を使用して判断できます。適切なフィールド インデックスを使用してクエリを高速化します。 MySQL にインデックスを追加すると、クエリのパフォーマンスを大幅に最適化できます。追加するインデックスが多すぎると、クエリ リクエストと更新操作のコストが増加する可能性があるため、クエリのパフォーマンスが低下する可能性があることに注意することが重要です。

  1. クエリ ステートメントの最適化

クエリ スロー ログにより、どのクエリを最適化する必要があるかがわかります。実行時間が設定されたしきい値を超えると、クエリはログ ファイルに記録されます。クエリ ステートメントを確認し、別のクエリ ステートメントを使用して実行速度を最適化することができます。

  1. キャッシュ メカニズムを使用する

キャッシュ メカニズムにより、クエリ速度が大幅に向上します。クエリ結果がすでにキャッシュに保存されている場合は、クエリの実行とリソースのオーバーヘッドを回避し、結果を直接返すことができます。キャッシュ メカニズムは、Redis や Memcached などのキャッシュ プロバイダーを使用して実装できます。

  1. MySQL サーバー パラメーターの調整

MySQL サーバーのパフォーマンスは、さまざまなパラメーターを調整してデータベース全体を最適化することで最適化できます。これらのパラメータには、MySQL キャッシュ サイズ、接続制限、クエリ タイムアウトなどが含まれます。これらのパラメータを調整することで、データベース サービスのパフォーマンスを特定のクエリに対して最適化できます。

以上がmysqlクエリの遅いログを有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。