MySQL スロークエリログ: 詳細ガイド
公開: 2023-08-01この記事は、MySQL スロー クエリ ログとそれらを効果的に解釈する方法を明確に理解できるように設計された、簡潔かつ包括的なリソースです。 このガイドは、低速クエリ ログを取り巻く複雑さを解明し、ユーザーがパフォーマンスのボトルネックや潜在的なデータベースの問題を特定して対処できるようにすることを目的としています。
MySQL のスロー クエリ ログを有効にすることは、サーバーに影響を与える可能性のあるパフォーマンスと効率の課題を診断する上で貴重な資産であることがわかります。 実行時間が著しく遅いクエリを特定することにより、クエリを担当するアプリケーションを再構築するか、クエリ自体を最適化することで、クエリに効果的に対処できるようになります。 このプロアクティブなアプローチにより、クエリが最適な効率で構築され、最終的にシステム全体のパフォーマンスの向上につながります。
目次
MySQL の概要
MySQL は、最も人気のあるオープンソースのリレーショナル データベース管理システムの 1 つであり、さまざまな Web アプリケーションやソフトウェアのデータの保存、管理、取得に広く使用されています。 他の洗練されたデータベース システムと同様に、MySQL はそのアクティビティとパフォーマンスに関する重要な情報を記録するための堅牢なログ メカニズムを提供します。 これらのログは、データベースの動作の監視とトラブルシューティングにおいて重要な役割を果たし、システムの健全性と効率についての貴重な洞察を提供します。
MySQL によって生成されるログの種類
MySQL によって生成されるログにはいくつかの種類があり、それぞれ特定の目的を果たします。
- 一般クエリ ログ: このログは、ソースに関係なく、サーバー上で実行されたすべての SQL クエリを記録します。 これは、実行されるクエリのシーケンスをデバッグして理解するための強力なツールですが、膨大な量のデータも生成するため、主に短期的な診断に適しています。
- エラー ログ:エラー ログは、MySQL サーバーの操作中に発生したエラーをキャプチャします。 これらのエラーには、起動、シャットダウンの問題、またはデータベースの機能に影響を与える可能性のあるその他の重大なエラーが含まれる場合があります。 エラー ログを監視すると、管理者は潜在的な問題を迅速に特定して対処することができます。
- スロー クエリ ログ:前述したように、スロー クエリ ログには、実行に事前定義されたしきい値よりも長い時間がかかるクエリが記録されます。 このログは、パフォーマンスのボトルネックや非効率なクエリを特定するのに役立ち、管理者がデータベース全体のパフォーマンスを最適化および強化できるようになります。
- バイナリ ログ:バイナリ ログには、データベースに対して行われたすべてのデータ変更 (挿入、更新、削除) の記録が含まれます。 これはレプリケーションの目的で使用され、複数の MySQL サーバー間でデータを同期できるようにします。
- リレー ログ:リレー ログは MySQL レプリケーションに固有です。 マスター サーバーから受信したデータは、レプリケーション セットアップのスレーブ サーバーで実行される前に保存されます。
MySQL スロークエリログを有効にする方法?
以下は、MySQL または MariaDB のスロー クエリ ログを有効にする手順です。
- まず、Bitwise を使用して SSH にログインする必要があります。 Bitwise SSH クライアントを開きます。 ホスト、ポート、およびユーザー名の詳細を入力し、[初期方法] ドロップダウンからパスワードを選択し、ログイン ボタンをクリックして続行します。 ポップアップが表示され、SSH パスワードの入力を求められます。 表示されたフィールドに SSH パスワードを入力します。
2. テキストエディタを使用して/etc/mysql/my.cnfファイルにアクセスします。 このためには、まず Bitwise SSH クライアントから[新しい SFTP ウィンドウ]に移動します。
ここで、リモート ファイルの検索バーに「/etc」と入力し、Enter キーを押します。
mysqlまたは MariaDB ファイルを開きます。
次に、 my.cnf を選択し、右クリックして編集をクリックします。
テキストエディタが表示されます。 次のコマンドをコピーし、ファイルの最後に貼り付けて保存します。
slow_query_log = 1 slow-query_log_file = /var/log/mysql-slow.log long_query_time = 2
3. Bitwise ターミナルを開き、次のコマンドを実行して/var/log/mysql-slow.log ファイルを生成し、mysql ユーザーをその所有者として割り当てます。
touch /var/log/mysql-slow.log chown mysql:mysql /var/log/mysql-slow.log
4. MySQL または MariaDB を再起動するには、以下のコマンドを実行します。
/usr/local/cpanel/scripts/restartsrv_mysql
MySQL スロークエリログを読む
以下を使用して、スロー クエリ ログを含むファイルにアクセスします。
/var/log/mysql/mysql-slow.log
ログ ファイル内には、遅いクエリがそれぞれエントリとして記録されます。 これらのエントリには通常、タイムスタンプ、クエリの実行時間、検査された行の数、実際の SQL ステートメントなどの詳細が含まれます。
多くの場合、スロー クエリ ログを直接読み取る代わりに、 「mysqldumpslow」コマンドを使用してログの内容を解析して要約する方が有益です。 次のように、SSH 経由で root としてログインしているときにコマンドを実行できます。
sudo -i mysqldumpslow /var/log/mysql/mysql-slow.log
以下の出力が得られます。
よくある質問
mysqldumpslow コマンドの目的は何ですか?
mysqldumpslowコマンドは、MySQL Slow Query ログの内容を解析して要約する目的を果たします。 これにより、最も頻繁に発生する遅いクエリやそれぞれの実行時間に関する詳細など、貴重な情報をログ ファイルから抽出できます。 mysqldumpslow /var/log/mysql/mysql-slow.logを実行すると、遅いクエリを効果的に分析し、効率的な方法で洞察を得ることができます。
スロークエリログを長期監視に使用できますか?
スロー クエリ ログは短期的な診断には有用ですが、長期間有効にすると大量のデータが生成される可能性があります。 長期的な監視を容易にするために、監視ツールやパフォーマンス分析ソリューションの採用など、別のアプローチを検討することをお勧めします。 そうすることで、過剰なエントリによるログのオーバーフローを防ぎ、データベースのパフォーマンスを長期にわたって効果的に管理できるようになります。
スロー クエリ ログは、データベースのパフォーマンスの問題の診断にどのように役立ちますか?
スロー クエリ ログは、実行時間が遅いクエリを特定するため、データベースのパフォーマンスの問題を診断する上で重要な役割を果たします。 これらの遅いクエリの分析を通じて、管理者はデータベース内のパフォーマンスのボトルネックや非効率性を正確に特定できます。 この情報を活用して、クエリの最適化、アプリケーションの再構築、または重要な変更の実装を進めて、システム全体のパフォーマンスを大幅に向上させることができます。
スロー クエリ ログの情報に基づいてクエリを最適化するにはどうすればよいですか?
ログから遅いクエリを特定したら、さまざまな方法でクエリを最適化することができます。 これには、適切なインデックスの追加、クエリの書き換え、データベース スキーマの再構築が含まれます。 さらに、EXPLAIN やプロファイリングなどのクエリ最適化手法を採用すると、貴重な洞察が得られ、クエリのパフォーマンスの大幅な向上に貢献できます。
スロー クエリ ログは MySQL にのみ適用できますか、それとも他のデータベース システムでも使用できますか?
スロー クエリ ログは、MySQL および MariaDB データベース システム専用に設計されています。 他のデータベース管理システムでも同等の機能が提供されている場合がありますが、ログ形式とアクティブ化方法はシステムによって異なる可能性があることに注意することが重要です。