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

推薦する

XHTML 入門チュートリアル: よく使われる XHTML タグ

<br />記事と同様に、Web ページにも明確な段落と重要度の異なるタイトルが必要です...

Nginxはクロスドメインの問題を解決し、サードパーティのページを埋め込む

目次序文困難クロスドメイン定義nginxの機能リバースプロキシ静的と動的の分離達成しようとする最終結...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

Raspberry Pi 3B+ に 64 ビット Ubuntu システムと Docker ツールをインストールする詳細な手順

Raspberry Pi 3B に 64 ビット アプリケーション (64 ビット JDK など) ...

CSS3で背景画像にカラーマスクを追加する方法

以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...

MySql インポート CSV ファイルまたはタブ区切りファイル

別のライブラリから別のライブラリにデータをインポートする必要がある場合があり、このデータは CSV ...

Linux でバックグラウンド タスクを実行するために nohup と screen を使用する例と違いの簡単な分析

SSH ターミナル (putty、xshell など) を使用して Linux サーバーに接続し、時...

Windows 10でDockerコンテナのポートにアクセスできない問題に対する完璧な解決策

Windows 10 で Docker コンテナのポートにアクセスできない問題を解決する (ポート ...

画像内のrarファイルを隠す方法

このロゴを .rar ファイルとしてローカルに保存し、解凍して効果を確認することができます。よりシン...

Ubuntu システムにおけるネットワーク構成ファイルの分析と説明

今日は奇妙なネットワーク問題に遭遇しました。調査プロセスといくつかの構成状況を記録し、Linux で...

写真のプレビューとアップロード機能を実現するhtml+css+js

はじめに: Web ページを作成するときに、画像をアップロードする必要がある場合がよくあります。画像...

CSS が最初のサイクルで画像を読み込むために @keyframes を使用するときに発生するホワイトギャップの問題 (フラッシュ画面) をすばやく解決します。

問題の説明: CSS アニメーション プロパティを使用すると、ループが最初に読み込まれたときに白いギ...

Vue3のdefineComponentの役割についての簡単な説明

目次defineComponent オーバーロード関数開発実務defineComponent 関数は...

MySQL スケジュール データベース バックアップ (フル データベース バックアップ) の実装

目次1. MySQLデータのバックアップ1.1. データをバックアップするためのmysqldumpコ...

Mysql通信プロトコルの詳細な説明

1.Mysql接続方法MySQL 通信プロトコルを理解するには、まず MySQL サーバーへの接続に...