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

推薦する

.NETCore Dockerはコンテナ化とプライベートイメージリポジトリ管理を実装します

1. Dockerの紹介Docker は Linux オペレーティングシステムの一部の機能をベースに...

MySQLの共通関数の概要

序文: MySQL データベースは、よく使用される集計関数、日付および文字列処理関数など、幅広い関数...

JavaScriptはキュー構造プロセスを実現する

目次1. キューを理解する2. カプセル化キュー3. 太鼓をたたいて花を渡す場合1. キューを理解す...

MySQLでデータをエクスポートするいくつかの方法の詳細な説明

MySQL データをエクスポートする目的は、データベースのバックアップ、テーブル構造のエクスポート、...

Dockerコアとインストールの具体的な使い方

1. Docker とは何ですか? (1)DockerはLinuxコンテナ内でアプリケーションを実行...

DOCTYPE HTMLを使用する理由

これがないと、ブラウザはページをレンダリングするときに Quirks モードを使用することがわかって...

Dockerコンテナのデータボリュームの詳細な説明

何ですかまず、Docker の概念を見てみましょう。アプリケーションと実行環境をコンテナにパッケージ...

Docker で onlyoffice をインストールして展開する詳細なプロセス

0. システム要件CPU I5-10400F以上メモリ 16 GB、32 GBのメモリが最適ハードド...

ウェブページ作成時のHTMLタグの使用に注意してください

この記事では、Web ページの作成を学習するときに注意すべき HTML タグに関するいくつかの問題を...

Vue カスタム オプション時間カレンダー コンポーネント

この記事の例では、参考のためにvueカスタムオプションタイムカレンダーコンポーネントの具体的なコード...

初心者がdockerにmysqlをインストールするときに遭遇するさまざまな問題

序文最近、パソコンのシャットダウンに時間がかかることが多く、強制的にシャットダウンするには電源ボタン...

Web デザインでフラッシュ オーバーレイ ポップアップ レイヤーの z-index プロパティを設定しても機能しない

デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...

CSS で隠し要素を実現する 7 つの興味深い方法

序文非表示要素の 3 つの属性である表示、可視性、不透明度の類似点と相違点は、フロントエンドの就職面...

Nginx 構成 80 ポート アクセス 8080 とプロジェクト名アドレス メソッド分析

Tomcatはプロジェクトにアクセスします。通常はIP + ポート + プロジェクト名です。 Ngi...

Vue2/vue3 ルーティング権限管理方法の例

1. Vueルーティングの権限制御には一般的に2つの方法がありますa. ルーティングメタ情報(メタ)...