ホームページ  >  記事  >  データベース  >  MySQL スロークエリログの実践 (グラフィックとテキストの分析)

MySQL スロークエリログの実践 (グラフィックとテキストの分析)

WBOY
WBOY転載
2022-09-14 17:28:022405ブラウズ

推奨学習: mysql ビデオ チュートリアル

1. 概要

MySQL のスロー クエリ ログは MySQL によって提供されます。 MySQLにおいて、応答時間が閾値(long_query_time、単位:秒)を超えたSQL文を記録するために使用されるログレコードの一種。デフォルトでは、MySQL は低速クエリのログを開始しません。この記事では、スロー クエリ ログを有効にする方法と、mysqldumpslow を使用してスロー クエリを分析する方法を簡単に紹介します。

2. スロー クエリ ログの設定

1. 一時的な設定

スロー クエリ ログを一時的に有効にします (再起動後に失敗します)

set global slow_query_log = on;

注: スロー クエリ ログをオフにしたい場合は、set global throw_query_log = off; を実行するだけです。

一時的な低速クエリ時間のクリティカル ポイントこのクリティカル ポイントを超えるクエリ時間は、スロー クエリ ログに記録されます (再起動の失敗)

set long_query_time = 1;

低速クエリを設定しますストレージ メソッド (再起動後は無効)

set global  log_output = file;

説明: ご覧のとおり、ここでファイルに設定しました。つまり、スロー クエリ ログがファイルに反映されます。デフォルトはなしです。テーブルまたはファイルに設定できます。テーブルの場合、スロークエリ情報は、mysql ライブラリの下にあるslow_logテーブルに保存されます。

2. スロークエリログのオープンステータスとスロークエリログの保存場所を問い合わせます

show variables like '%quer%';

##パラメータの説明:

  • slow_query_log: スロー クエリが有効かどうか
  • slow_query_log_file: スロー クエリ ログ ファイルのパス
  • # #long_query_time:
  • 秒数を超えるクエリはログに書き込まれます
  • log_queries_not_using_indexes 値を ON に設定すると、インデックスを使用しないすべてのクエリが記録されます (これを有効にすると、パフォーマンスの最適化。通常は有効にしないでください)

3. ログ ストレージ形式を表示します

#
show variables like 'log_output';

#4. 低速ログを永続的に有効にします

Modify my.cnf

in 構成ファイル my.cnf (通常は /etc/my.cnf) の [mysqld] セクションに次のパラメーターを追加します。

[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1

このうち、slow_query_log = 1 はスロー クエリをオンにすることを意味し、0 はオフにすることを意味します

slow_query_log_file、スロー クエリ ログのパスを指定します。MySQL にはこのパスに対する書き込み権限が必要です。

long_query_time = 1、ログを記録する前のクエリ時間が 1 秒以上であることを示します。デフォルトは 10s

log_queries_not_using_indexes = 1、インデックスを使用しない SQL ステートメントが

#MySQL サービスを再起動します。MySQL を再起動すると、/var/lib/mysql/slow-query.log ファイルに記録されます。

3. スロー クエリ テスト

スロー クエリを作成して実行します。次のように:

mysql> select sleep(1);+----------+
| sleep(1) |
+----------+
| 0 |
+----------+
1 row in set (1.00 sec)

スロー クエリ ログスロー クエリ ログ ファイルを開きます。上記の遅いクエリのSQL文がログに記録されていることがわかります。

4. 遅いクエリ分析ツール

mysqldumpslow
mysqldumpslow は、遅いクエリを分析するための MySQL 独自のツールです。このツールは Perl スクリプトです。

#一般的に使用されるパラメータは次のとおりです。

-s: Sort メソッド、値は次のとおりです

  • c: クエリ数
  • t:クエリ時間
  • l:ロック時間
  • r:レコードを返す
  • ac:平均クエリ数
  • al:平均ロック時間
  • ar:平均収益レコードブック
  • at:平均クエリ時間
  • -t:topNクエリ
  • -g :正規表現
  • 最もアクセスされた 5 つの SQL ステートメントを取得します:

##時間順に並べ替えます。上位 5 つの SQL ステートメント

$ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log

時間順に並べ替えられ、「like」を含む上位 5 つの SQL ステートメント

$ mysqldumpslow -s t -t 3 -g "like" /var/lib/mysql/slow-query.log

五、MySQL 清理slowlog方法

SET GLOBAL slow_query_log = 'OFF';
ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop;
CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop;
SET GLOBAL slow_query_log = 'ON';
DROP TABLE mysql.slow_log_drop;

推荐学习:mysql视频教程

以上がMySQL スロークエリログの実践 (グラフィックとテキストの分析)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。