MySQL スロークエリログの詳細な理解

MySQL スロークエリログの詳細な理解

スロークエリログとは何ですか?

MySQL スロー クエリ ログは、MySQL が提供するログ レコードです。これは、応答時間がしきい値を超えた MySQL のステートメントを記録するために使用されます。具体的には、実行時間が long_query_time 値を超えた SQL ステートメントがスロー クエリ ログに記録されます。

具体的には、long_query_time 値よりも長い時間がかかる SQL ステートメントがスロー クエリ ログに記録されます。 long_query_time のデフォルト値は 10 です。これは、ステートメントが 10 秒以上実行されることを意味します。

これは、どの SQL 文が最大許容時間を超えているかを確認するために使用されます。たとえば、SQL 文の実行に 5 秒以上かかる場合、その SQL 文は遅いとみなされます。5 秒以上かかる SQL 文を収集し、以前の説明に基づいて包括的な分析を実施したいと考えています。

デフォルトでは、MySQL データベースではスロー クエリ ログが有効になっていないため、このパラメータを手動で設定する必要があります。もちろん、チューニングに必要がない場合は、スロークエリログを有効にするとパフォーマンスに多少の影響が出るため、このパラメータを有効にすることは一般的には推奨されません。スロー クエリ ログは、ログ レコードをファイルへ書き込むことをサポートします。

スロークエリを有効にする方法

オープンステータスを確認する

'%slow_query_log%' のような変数を表示

低速クエリを有効にする

グローバル slow_query_log を 1 に設定する

スロー クエリ ログを有効にするには、set global_slow_query_log = 1 を使用します。これは現在のデータベースにのみ適用され、MYSQL が再起動されると無効になります。

永続的にしたい場合は、設定ファイル my.cnf を変更する必要があります (他のシステム変数についても同様です)。my.cnf ファイルを変更し、[mysqld] の下のパラメータを追加または変更します。

次に、MySQL サーバーを再起動します。 my.cnfファイルでは次の2行が設定されます。

遅いクエリログ = 1

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

スロークエリパラメータ slow_query_log_file は、スロークエリログファイルの保存パスを指定します。デフォルトでは、システムは host_name-slow.log というデフォルトファイルを指定します (パラメータ slow_query_log_file が指定されていない場合)。

では、スロー クエリ ログを有効にすると、スロー クエリにどのような SQL が記録されるのでしょうか?

デフォルトの時間の長さを秒単位で表示するには、「long_query_time%」などの表示変数を使用します。

同様に、コマンドを使用して、my.cnf でこれを変更したり構成したりすることもできます。実行時間が long_query_time とまったく同じ場合は記録されません。つまり、MySQL ソース コードでは、long_query_time より大きいと判断され、それ以上と判断されないのです。

ログしきい値を設定するには:

グローバル long_query_time=3 を設定します。

同様に、コマンドを使用して、my.cnf でこれを変更したり構成したりすることもできます。実行時間が long_query_time とまったく同じ場合は記録されません。つまり、MySQL ソース コードでは、long_query_time より大きいと判断され、それ以上と判断されないのです。

ログしきい値を設定するには:

グローバル long_query_time=3 を設定します。

設定したが変化がなかった?なぜ?この時点で、セッションを再開する必要があります。

次に、以下に示すように、より遅いクエリを実行しますが、構成ファイルで次のように構成することを忘れないでください。

次に、ログ ファイルに移動して、どの SQL ステートメントがしきい値を超えているかを確認します。

現在のシステムにあるスロークエリレコードの数を照会します。

設定ファイルを記録する

slow_query_log=1;
slow_query_log_file=/var/lib/mysql/tim-slow.log;
長いクエリ時間=3;
log_output=ファイル

ログ分析ツール mysqldumpshow

実稼働環境では、ログを手動で分析し、SQLを見つけて分析したい場合、それは明らかに手作業です。MYSQLはログ分析ツールmysqldumpshowを提供しています。

  • s: ソート方法を示します
  • c: 訪問回数
  • l: ロック時間
  • r: レコードを返す
  • t: クエリ時間
  • al: 平均ロック時間
  • ar: 返されたレコードの平均数
  • at: 平均クエリ時間
  • t: 返されるレコードの数
  • g: 通常のマッチングパターンが続く(大文字と小文字は区別されない)

使用例は次のとおりです。

最も多くのレコードを返す 10 個の SQL ステートメントを取得します。

mysqldumpslow -sr -t 10 /var/lib/mysql/tim-slowlog

上位10のSQLクエリを取得する

mysqldumpslow -s ct 10 /var/lib/mysql/tim-slow ログ

左結合クエリステートメントを含む、時間順に並べられた最初の 10 個の項目を取得します。

mysqldumpslow -st -t 10 -g "左結合" /var/lib/mysql/tim-slowlog

これらのコマンドを more コマンドと組み合わせて使用​​することもお勧めします。そうしないと、画面が爆発する可能性があります。

mysqldumpslow -sr -t 10 /var/lib/mysq/tim-slow.log | 詳細

上記は、MySQL スロークエリログの詳細な理解に関する内容です。MySQL スロークエリログの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Docker MySQL コンテナでスロークエリログを有効にする方法
  • MySQL の遅いクエリの最適化ソリューション
  • MySQL で遅いクエリ SQL を見つけて最適化する詳細な例
  • MySQL最適化ソリューション: スロークエリログを有効にする
  • MySQLクエリが遅い理由
  • MySQLスローログに関する知識のまとめ
  • MySQL の遅いクエリの落とし穴
  • MySQL で遅い SQL を素早く見つける方法

<<:  IE9beta版ブラウザはHTML5/CSS3をサポート

>>:  トップに戻るボタンを実装するJavaScript

推薦する

CentOS7 ファイアウォールとオープンポートの簡単な使い方の簡単な紹介

概要(公式にはより詳しい説明があります) Firewalld は、ネットワーク接続またはインターフェ...

MySQL 8の新機能ROLEの詳しい説明

MySQL ROLE はどのような問題を解決しますか?プロフェッショナルな資質を持ち、権限管理に細心...

MySQLのGROUP BYステートメントを最適化する方法

MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

Linux システムで tcpdump を使用してパケットをキャプチャする方法

まずサンプルコードを見てみましょう: 1. 共通パラメータ tcpdump -i eth0 -nn ...

Linux でログインタイムアウト後に非アクティブなユーザーを自動的にログアウトする

方法1: .bashrcまたは.bash_profileファイルを変更するこれは、ホーム ディレクト...

CentOS7.6にMYSQL8.0をインストールする詳細な手順

1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...

MySQL データベース操作 (作成、選択、削除)

MySQL データベースの作成MySQL サービスにログインしたら、create コマンドを使用し...

Vueはログイン認証コードを実装する

この記事では、ログイン認証コードを実装するためのvueの具体的なコードを例として紹介します。具体的な...

mysql の認証、起動、およびサービスの起動のための一般的なコマンド

1. 4つの起動方法: 1.mysqld MySQL サーバーを起動します: ./mysqld --...

MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

序文この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関...

Nginx ポート競合を解決するトラブルシューティング方法の例

問題の説明データ転送に Nginx を使用し、フロントエンドとバックエンドが分離された Spring...

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

Vue ブラウザログアウトの実装例

目次1. beforeunload イベント2. アンロードイベント3. ソースコードプロジェクトの...

MySQL がテーブルを読み取れないエラー (MySQL 1018 エラー) の解決方法

1. エラーの再現MySQL データベースにはアクセスできますが、データベース テーブルを読み取るこ...