MySQL スロークエリログの基本的な使い方チュートリアル

MySQL スロークエリログの基本的な使い方チュートリアル

スロークエリログ関連のパラメータ

MySQL スロー クエリ関連のパラメータの説明: slow_query_log: スロー クエリ ログを有効にするかどうか。1 は有効、0 は無効を意味します。

  • slow_query_log : スロークエリログを有効にするかどうか。1 は有効、0 は無効を意味します。
  • log-slow-queries: MySQL データベースの古いバージョン (5.6 未満) のスロー クエリ ログの保存パス。このパラメータを設定しない場合、システムはデフォルトのファイルhost_name-slow.logを使用します。
  • slow-query-log-file: MySQL データベースの新しいバージョン (5.6 以上) のスロー クエリ ログの保存パス。このパラメータを設定しない場合、システムはデフォルトのファイルhost_name-slow.logを使用します。
  • long_query_time: 遅いクエリのしきい値。クエリ時間が設定されたしきい値を超えると、ログが記録されます。
  • log_queries_not_using_indexes: インデックスを使用しないクエリもスロークエリ ログに記録されます (オプション)。
  • log_output: ログの保存方法。 log_output='FILE' はログをファイルに保存することを意味します。デフォルト値は 'FILE' です。 log_output='TABLE' はログをデータベースに保存することを意味するため、ログ情報は mysql.slow_log テーブルに書き込まれます。 MySQL データベースは、同時に 2 つのログ保存方法をサポートします。設定するときは、log_output='FILE,TABLE' のように、カンマで区切るだけです。システムの専用ログ テーブルにログを記録すると、ファイルにログを記録するよりも多くのシステム リソースが消費されます。したがって、低速クエリ ログを有効にしてシステム パフォーマンスを向上させる必要がある場合は、まずファイルにログを記録することをお勧めします。

1.設定方法

スロークエリログを使用してキャプチャする

有効にする前にいくつかの設定が必要です

方法1: グローバル変数の設定

スロークエリログのログファイルの場所を設定する

グローバル slow_query_log_file を "D:/slow_log/slow_log.log" に設定します。

インデックスを使用しないSQL文をログに記録するかどうかを設定します

グローバル log_queries_not_using_indexes をオンに設定します。

SQL実行時間がn秒を超える限り記録するように設定する

グローバルlong_query_timeを0.001に設定します。

ここでの 0.001 秒の設定はテスト用です。通常はこれよりも大きい値になります。

MySQL スロークエリログを有効にする

グローバル slow_query_log をオンに設定します。

方法2: 構成ファイルの設定

設定ファイルmy.cnfを変更し、[mysqld]の下に以下を追加します。

[mysqld]
slow_query_log = オン
log_queries_not_using_indexes = オン;
slow_query_log_file = /usr/local/mysql/data/slow.log
長いクエリ時間 = 1

設定後のパラメータを表示する

「slow_query%」のような変数を表示します。
'long_query__time' のような変数を表示します。

2. スロークエリログレコードの内容

時間IDコマンド引数
# 時間: 2019-01-08T04:12:09.269315Z 
# ユーザー@ホスト: h5_test[h5_test] @ localhost [::1] ID: 12 
# クエリ時間: 0.000831 ロック時間: 0.000198 送信行数: 1 検査行数: 3 
mc_productdb を使用します。
タイムスタンプを1546920729に設定します。
t.customer_id、t.title、t.contentを選択します。 
から (
SELECT customer_id FROM product_comment WHERE product_id = 199726 AND Audit_status = 1 LIMIT 0,15
)a JOIN product_comment t 
a.customer_id = t.comment_id; の場合
  • 時間: クエリが実行された日時
  • User@Host: クエリを実行したユーザーとクライアントの IP アドレス
  • Id: クエリを実行するスレッドIDです
  • Query_time: SQL実行に費やされた時間
  • Lock_time: レコードをロックするためのクエリの実行にかかる時間
  • Rows_sent: クエリによって返された行数
  • Rows_examined: クエリされたデータを返すために読み取られた行数

3. スロークエリログを分析する方法

使用方法: mysqldumpslow [ OPTS... ] [ LOGS... ]

MySQLのスロークエリログを解析して要約します。オプションは次のとおりです。

 --verbose 詳細
 --debug デバッグ
 --help このテキストを標準出力に書き込む

 -v 詳細
 -d デバッグ
 -s ORDER 何を基準に並べ替えるか (al、at、ar、c、l、r、t)、デフォルトは 'at'
  al: 平均ロック時間
  ar: 送信された行の平均数
  at: 平均クエリ時間
   c: カウント
   l: ロック時間
   r: 送信された行数
   t: クエリ時間
 -r ソート順を逆にする(最初ではなく最後が最大)
 -t NUM 上位n個のクエリのみを表示
 -a すべての数値をNに、文字列を'S'に抽象化しない
 -n NUM 名前に少なくとも n 桁の数字が含まれる抽象番号
 -g PATTERN grep: この文字列を含む文のみ考慮する
 -h HOSTNAME *-slow.log ファイル名の db サーバーのホスト名 (ワイルドカードも使用可能)、
  デフォルトは「*」で、すべてに一致します
 -i NAME サーバーインスタンス名(mysql.server 起動スクリプトを使用している場合)
 -l 合計時間からロック時間を減算しない

スロークエリログには多数の繰り返しSQLが含まれるため、便宜上、MySQLが提供するコマンドラインツールmysqldumpslowを使用してログを分析することができます。

$ mysqldumpslow.pl slow_log.log

slow_log.log から mysql スロークエリログを読み取る
カウント: 1 時間=0.00秒 (0秒) ロック=0.00秒 (0秒) 行=0.0 (0)、0ユーザー@0ホスト
 C:\Program Files\MySQL\MySQL Server NN\bin\mysqld.exe、バージョン: NNN-log (MySQL Community Server (GPL))。次で開始されました:
 TCP ポート: N、名前付きパイプ: MySQL
 # 時刻: NN-08T04:N:N.269315Z
 # ユーザー@ホスト: h5_test[h5_test] @ localhost [::N] ID: N
 # クエリ時間: NN ロック時間: NN 送信行数: N 検査行数: N
 mc_productdb を使用します。
 タイムスタンプをNに設定します。
 t.customer_id、t.title、t.contentを選択します。
 から (
 SELECT customer_id FROM product_comment WHERE product_id = N AND Audit_status = N LIMIT N,N
 )a JOIN product_comment t
 a.customer_id = t.comment_id の場合

スロークエリログに記録されるデータは、スロークエリログに記録されるデータと似ていますが、スロークエリログの記録期間中にこの SQL が実行された回数を記録する Count という行が追加されています。SQL が複数回実行された場合、このコマンドで分析すると 1 つの SQL ログのみが表示されます。Count の値は実行回数を表し、他の数字はマージのために N に置き換えられます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MYSQL スロークエリとログの例の説明
  • MYSQL スロークエリとログ設定とテスト
  • MySQL スロークエリログの有効化と設定
  • MySQL 5.7 のスロークエリログの時間がシステム時間より 8 時間遅れている理由の詳細な説明
  • MySQL でスロークエリログ機能を有効にする方法
  • MySQLの一般クエリログとスロークエリログの分析
  • MySQL スロークエリログの設定と使用方法のチュートリアル
  • MySQL でスロークエリログを有効にする方法
  • MySql のスロークエリ分析とスロークエリログの開き方の詳細説明
  • MySQL スロークエリログの詳細な理解

<<:  CentOS7 での PostgreSQL 11 の詳細なインストールと設定のチュートリアル

>>:  axiosリクエストをvueでカプセル化する方法

ブログ    

推薦する

MySQL 無料インストール版 (zip) のインストールと設定の詳細なチュートリアル

この記事では、MySQL無料インストール版(zip)のインストールと設定のチュートリアルを参考までに...

マークアップ言語 - CSS レイアウト

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

JSを使用して簡単な計算機を実装する

JSを使用して、参考用の簡単な計算機を完成させます。具体的な内容は次のとおりです。要件: 入力値は数...

単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法

ここで商品テーブルを作成しました。その中のデータを見てみましょう。 mysql> 商品から *...

Centos7 で keepalived ログを別のパスに設定する方法の詳細な説明

Keepalived のインストール: cd <keepalived_sourcecode_p...

Vuex全体のケースの詳細な説明

目次1. はじめに2. 利点3. 使用手順1. Vuexをインストールする2. Vuexを参照する3...

テーブルの4辺を上下左右にスクロールするように固定する方法

質問:最近、プロジェクトの統計を行っていたときに、テーブルを上下にスクロールしたときにテーブルの先頭...

react+reduxを使用してカウンター機能を実装すると発生する問題

Redux はシンプルな状態マネージャーです。その歴史をたどることはしません。使用法の観点から見ると...

vue3+electron12+dll 開発のためのクライアント構成の詳細な説明

目次リポジトリソースを変更する起動するvue-devtoolsを置き換える予防ボーダーレスウィンドウ...

MySQLデータベースホスト127.0.0.1とlocalhostの違い

私の友人の多くは、127.0.0.1 と localhost の違いがわからず、問題に遭遇するかもし...

MySQLのルートパスワードをリセットする最も簡単な方法

私の MySQL バージョンは MYSQL V5.7.9 です。古いバージョンを使用してください: ...

antd pro に基づく SMS 認証コード ログイン機能 (プロセス分析)

目次まとめ全体的なプロセスフロントエンドページコード検証コードとログイン サービスをリクエストする ...

XHTML 2.0 新機能プレビュー

<br />ブラウザが次世代のXHTMLを処理できるようになる前に、このよりリッチなコン...

mysql5.7.14 解凍版インストールと設定方法 グラフィックチュートリアル (win10)

Win10はmysql5.7の解凍版をインストールします。参考までに、具体的な内容は次のとおりです...