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でカプセル化する方法

推薦する

Linuxシステムでノードプロセスを実行しているが、プロセスを強制終了できない問題を解決します

まず、Linux システムで実行されているノード プロセスはプロセスを強制終了できないことを紹介しま...

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...

CSSスタイルのカスケーディングルールの詳細な説明

CSS スタイル ルール構文スタイルは、CSS の基本単位です。各スタイル ルールは、セレクターと宣...

大きな MySQL テーブルに列を追加する方法

質問は https://www.zhihu.com/question/440231149 から参照さ...

cocoscreatorプレハブの詳しい説明

目次プレハブプレハブの作り方プレハブの役割1. 同じタイプのノードをバッチで作成する2. 特定の時間...

Kylin V10 への zabbix-agent のインストール手順

1. インストールパッケージをダウンロードするダウンロードアドレス: https://sourcef...

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by 問題を解決する

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by の問題...

左右の幅を固定し、中央の幅を適応させたHTMLレイアウトのソリューションの詳細な説明

この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...

CSSを使用して3Dフォトウォール効果を作成する

CSS を使用して 3D フォト ウォールを作成します。具体的なコードは次のとおりです。 <!...

Tomcatがセッションを管理する方法の例

ConcurrentHashMapを学習しましたが、どのように適用すればよいかわかりませんか? To...

MySQLデータ行と行オーバーフローのメカニズムの詳細な説明

1. 行の形式は何ですか? MySQL の行形式の設定は次のように表示されます。 実際、MySQL ...

ドラッグアンドドロップでVueユーザーインターフェースを生成する方法

目次序文1. 技術原理1.1 レイアウト1.2 コンポーネント1.3 ステータス1.4 イベント1....

Vue プロジェクトでブラウザ キャッシュ設定を無効にする例

プロジェクトをリリースするときに、キャッシュをクリーンアップする必要があるという問題に遭遇することが...

Alibaba Cloud Docker Yum ソースを使用した Docker 17.03.2 の CentOS7 オンラインインストールの詳細説明

参照ドキュメント公式 Docker インストール ドキュメント: https://docs.dock...

セマフォによるTomcatの異常終了の解決方法

最近はビッグデータで遊んでいます。友人が私のところに来て、オンラインの Tomcat が不可解に終了...