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

推薦する

MySQL Strict Modeの知識ポイントの詳細な説明

I. 厳密モードの説明MySQL 5.0 以降の厳密モード (STRICT_TRANS_TABLES...

vuex での Getter の使用法の詳細な説明

序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...

jsドラッグ効果の原理と実装

ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカ...

Nginx コンパイル済み nginx - 新しいモジュールを追加

1. 既存のモジュールを表示する nginx の sbin ディレクトリに nginx の sbin...

MySQL 5.7.19 winx64 無料インストールバージョン設定チュートリアル

mysql-5.7.19-winx64インストールフリー版の設定方法、参考までに具体的な内容は以下の...

MySQL 8.0.22 解凍版インストールチュートリアル(初心者向け)

目次1. リソースのダウンロード2. ソフトウェアを解凍する2.1 場所を選択する2.2 名前を変更...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

アイデアを通じてプロジェクトをDockerにパッケージ化する方法

多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分の...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

forEachでawaitが機能しない問題を解決する

1. はじめに数日前、プロジェクトでトラバーサルに使用したときに落とし穴に遭遇し、解決するのに 1 ...

独自の FTP および SFTP サーバーを構築するプロセスの紹介

FTP と SFTP はファイル転送プロトコルとして広く使用されています。関連する機能を開発するには...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...

MySQL Community Server 8.0.11 のインストールと設定方法のグラフィックチュートリアル

最近、MySQL を始めとしてデータベースの知識を勉強し始めました。以下では、皆さんの参考になるよう...

Linux CentOS 6.5 ifconfig が IP を照会できない問題の解決方法

最近、何人かの友人から、仮想マシンに CentOS をインストールした後、ifconfig コマンド...

MySQL 5.7.18 zip バージョンのインストール チュートリアル

MySQL の mysql 5.7.18 zip バージョンは、クリックして次のステップをクリックし...