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 でよく使われる型変換関数の概要 (推奨)

1. Concat関数。よく使用される接続文字列: concat 関数。たとえば、SQLクエリ条件...

MySQLは現在の日付と時刻を取得する関数の例の詳細な説明

現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

MySQLでデータベースのインストールパスを表示する方法

mysql コマンドを使用して、mysql のインストール パスを表示できます。 # 次の 2 つの...

Vueはスライダードラッグ検証機能の全プロセスを実現します

レンダリング 骨組みを定義し、HTMLとCSSを記述するHTML部分 <テンプレート> ...

跳ねるボールを実現するネイティブjs

思いつきで、小さなボールが跳ね返るケーススタディを書いてみました。具体的な内容は以下のとおりです。主...

SQL 文を使用してデータを収集する場合の sum 関数と count 関数の if 判定条件の使用法の説明

まず、例を挙げてみましょう(読みたくない場合は、以下の要約だけ読んでください)。 order_typ...

fullpage.js フルスクリーンスクロールの具体的な使い方

1.fullpage.js ダウンロードアドレスhttps://github.com/alvarot...

MySQL は正常に起動するがポートをリッスンしない場合の解決策

問題の説明MySQL が正常に起動しました。以下に示すように、 ps -ef |grep mysql...

バックアップ データをインポートするときに innodb_index_stats がエラーを報告する場合の主キー競合の解決方法

障害の説明percona5.6、mysqldump フルバックアップ、バックアップデータのインポート...

ネイティブJSは非常に見栄えの良いカウンターを実装します

今日は、ネイティブ JS で実装された見栄えの良いカウンターを紹介します。効果は次のとおりです。 以...

JavaScript マクロタスクとマイクロタスクの実行順序についての簡単な説明

目次1. JavaScriptはシングルスレッドです1. 同期タスク2. 非同期タスク2. タスクキ...

CSS3 背景コントロールプロパティと色遷移を使用してグラデーション効果を実現します。

CSS3 背景画像関連互換性: IE9+背景クリップ 背景画像描画領域background-cli...

vue WatchとComputedの使用の概要

目次01. リスナーウォッチ(1)機能(2)特性と方法(3)監視対象(4)リスニングアレイ02. 計...

Vueはパーセンテージバー効果を実現します

この記事では、パーセンテージバーを実現するためのVueの具体的なコードを参考までに共有します。具体的...