mysqlクエリの遅いログ

WBOY
WBOYオリジナル
2023-05-14 10:05:375162ブラウズ

MySQL は、大規模なデータ処理において優れたパフォーマンスとスケーラビリティを備えた、一般的に使用されるリレーショナル データベース管理システムです。クエリは、最も頻繁に使用される操作の 1 つです。ただし、大量のデータを処理する場合、さまざまな理由でクエリの実行が遅くなり、システムのパフォーマンスに影響が出ることがあります。この場合、MySQL の低速クエリ ログを使用してクエリ パフォーマンスの問題を特定し、最適化する必要があります。この記事では、MySQL スローログクエリの基礎知識と応用方法を詳しく紹介します。

1. MySQL Query Slow Log とは

MySQL Query Slow Log は、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 クエリ スロー ログがデフォルトで有効になっています。 MySQL 5.6 や 5.5 などの古いバージョンの MySQL の場合、クエリスローログ機能を有効にするには手動構成が必要です。 MySQL クエリのスロー ログを有効にする詳細な手順は次のとおりです。

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

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

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

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

slow_query_log = 0

この行をコメント アウトします。記号 # が削除され、値が 1 に変更されます。

slow_query_log = 1

  1. スロー ログ ファイルのパスを指定します

次の行を見つけます:

slow_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

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

    MySQL サービスを再起動します
次のコマンドを使用して 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 を使用したクエリの遅いログの解析
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 Query Slow Log は、クエリのパフォーマンスが遅い問題を特定して解決するのに役立つ非常に便利なツールです。このツールは起動とカスタマイズが簡単で、ログに記録される情報はクエリのパフォーマンスを分析し、どのクエリを最適化する必要があるかを判断するのに役立ちます。ベスト プラクティスに従い、適切な最適化を実行すると、MySQL サーバーの全体的なパフォーマンスが向上し、大規模なデータベースの管理と維持が向上します。

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

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