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カスタム変数の概念と特徴

MySQL カスタム値は、値を保存するための一時的なコンテナです。サーバーへの接続がアクティブである...

Vue3はJingdong製品詳細ページの虫眼鏡効果コンポーネントをカプセル化します

この記事では、Jingdong製品詳細ページの虫眼鏡効果コンポーネントに似たvue3カプセル化の具体...

要素 el-table テーブルの二次カプセル化 (テーブルの高さの調整付き)

序文会社でのインターンシップ中、フロントエンド開発にはvue+element-uiフレームワークを使...

Linux で nohup ログ出力が大きすぎる問題の解決方法の詳細な説明

最近、hadoop テスト クラスターで spark ストリーミング プログラムを実行し、その後、n...

Dockerコンテナのタイムゾーン調整操作

Docker コンテナのタイムゾーンがホストマシンと一致しているかどうかを確認するにはどうすればよい...

MySQL でデータ復旧に binlog を使用する方法

序文最近、オンラインでデータが誤って操作されました。データベースが直接変更されたため、それを回復する...

MySQLのバージョンアップ方法を超詳しく解説

目次1. はじめに2. データベースをバックアップする3. オリジナルのMysqlをアンインストール...

JavaScript フォーム検証の例

HTML フォームは、名前、電子メール アドレス、場所、年齢などのユーザー情報を収集するためによく使...

画像ブラインド表示の効果を実現するための純粋な CSS の例

まず、完成した効果をお見せしましょう 主なアイデア: 実際、このブラインドは一種の手品を使用していま...

既存のMySQLデータベースの文字セットを統一する方法

序文データベースでは、一部のデータ テーブルとデータは latin1 であり、一部のデータ テーブル...

MySQL の例 DTID マスタースレーブ原理の分析

目次1. GTIDの基本概念2. GTIDの利点3. GTIDの仕組み4. 従来のレプリケーションに...

Vueでeslintを使用する方法の詳細な説明

目次1. 説明2. 関連する依存パッケージをダウンロードする3. 設定ファイル .eslintrc....

MySQLクエリ速度を最適化する方法

前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...

モバイル適応型ウェブページ効果は、小さな表示ページの問題を解決します

仕事上、携帯電話に適応した Web ページ効果を作成する必要があります。ようやく完成しました。まずは...

ユーザーはその理由を知る必要がある

証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...