MySQLスローログに関する知識のまとめ

MySQLスローログに関する知識のまとめ

1. スローログの紹介

スロー ログの正式名称はスロー クエリ ログで、主に MySQL での実行に指定された時間よりも長い時間がかかる SQL ステートメントを記録するために使用されます。スロークエリログを使用すると、実行効率が低いステートメントを見つけて最適化することができます。

デフォルトでは、MySQL ではスロー ログは有効になっていません。スロー ログを有効にするには、slow_query_log パラメータを変更します。スローログに関連するパラメータは次のように導入されています。

  • slow_query_log: スロークエリログを有効にするかどうか。デフォルト値は 0 です。0 または 1 に設定できます。1 は有効を意味します。
  • slow_query_log_file: スロークエリログの場所と名前を指定します。デフォルト値は host_name-slow.log です。絶対パスを指定できます。
  • long_query_time: 低速クエリ実行時間のしきい値。時間がこのしきい値を超えると、クエリが記録されます。デフォルト値は 10 (秒単位) です。
  • log_output: スロークエリログの出力先。デフォルト値は file で、ログがファイルに出力されることを意味します。
  • log_timestamps: 主にエラー ログ、スロー ログ、ジェネラ ログ ログ ファイルの表示タイム ゾーンを制御します。デフォルトでは UTC タイム ゾーンが使用されます。SYSTEM システム タイム ゾーンに変更することをお勧めします。
  • log_queries_not_using_indexes: インデックスを使用しないすべてのクエリ ステートメントをログに記録するかどうか。デフォルトはオフです。
  • min_examined_row_limit: このパラメータより少ないクエリスキャン数を持つ SQL ステートメントは、スロークエリログに記録されません。デフォルト値は 0 です。
  • log_slow_admin_statements: 低速管理ステートメントがスロー ログに書き込まれるかどうか。管理ステートメントには、alter table、create index などが含まれます。デフォルト値はオフで、書き込まれないことを意味します。

一般的には、スロー ログを有効にしてしきい値時間を設定するだけでよく、残りのパラメータはデフォルトで設定できます。しきい値時間は柔軟に調整でき、たとえば 1 秒または 3 秒に設定できます。

2. スローログの練習

構成ファイルでは、次のスロー ログ関連のパラメータを設定できます。

# スロークエリログ関連の設定は、実際の状況に応じて vim /etc/my.cnf を変更できます。
 [mysqld]
 遅いクエリログ = 1
slow_query_log_file = /data/mysql/logs/slow.log
長いクエリ時間 = 1
log_timestamps = システム
log_output = ファイル

スローログに記録される内容を詳しく見てみましょう。より遅いクエリ SQL を実行して、それがスロー ログにどのように反映されるかを確認してみましょう。

# SQL 実行時間がしきい値を超えています# 時刻: 2021-05-13T17:38:03.687811+08:00
# ユーザー@ホスト: root[root] @ [192.168.85.0] ID: 2604943
# クエリ時間: 1.099889 ロック時間: 0.000144 送信行数: 39 検査行数: 45305
タイムスタンプを1620898683に設定します。
test_table から * を選択し、col_name が '%Test%' のような場合;

スロー クエリ ログが有効になっていて、出力先として FILE が選択されている場合、ログに書き込まれる各ステートメントは # 文字で始まります。遅い SQL ステートメントの各グループについて、最初の行には SQL ステートメントが実行された時刻が記録され (log_timestamps パラメータが UTC の場合、時刻は UTC タイムゾーンで表示されます)、2 行目にはステートメントを実行したユーザーと IP アドレス、および接続 ID が記録されます。3 行目のフィールドの説明は次のとおりです。

  • Query_time: 期間 ステートメントの実行時間(秒単位)。
  • Lock_time: 継続時間 ロックを取得する時間 (秒単位)。
  • Rows_sent: N クライアントに送信された行数。
  • Rows_examined: N サーバー レベルで検査された行数 (ストレージ エンジン内の処理はカウントされません)。

次の 2 行は、このステートメントが実行されたときのタイムスタンプと、特定の遅い SQL です。

実際の環境では、log_queries_not_using_indexes パラメータを有効にするとスローログが急速に増加する可能性があるため、このパラメータを有効にすることは推奨されません。スローログのスクリーニングと分析には、mysqldumpslow や pt-query-digest などのツールを使用できます。スロー ログ ファイルの場合は、定期的にアーカイブする必要があります。たとえば、スロー ログを一時的に閉じ、古いファイルの名前を変更してから、スロー ログを再度開きます。これにより、新しいログ ファイルに書き込まれ、ログ サイズが効果的に削減されます。

以上がMySQLスローログ関連の知識のまとめの詳しい内容です。MySQLスローログについてさらに詳しく知りたい方は、123WORDPRESS.COMの他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • Docker MySQL コンテナでスロークエリログを有効にする方法
  • MySQL の遅いクエリの最適化ソリューション
  • MySQL で遅いクエリ SQL を見つけて最適化する詳細な例
  • MySQL最適化ソリューション: スロークエリログを有効にする
  • MySQLクエリが遅い理由
  • MySQL の遅いクエリの落とし穴
  • MySQL スロークエリログの詳細な理解
  • MySQL で遅い SQL を素早く見つける方法

<<:  CSSは半透明の境界と複数の境界のシーン分析を実現します

>>:  Docker Swarm サービス オーケストレーション コマンドの詳細な説明

推薦する

WEB 標準ウェブページ構造

背景画像でも、ページ上のテキストサイズでも、1 ピクセルの違いは非常に明白です。そして、私は学生時代...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...

Nginx 正規表現関連のパラメータとルールの紹介

序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...

MySQL 5.6 の「暗黙的な変換」によりインデックスが失敗し、データが不正確になる

背景SQL クエリを実行するときに、where 条件の vachar 型フィールドの単一引用符を削除...

CSS の新機能には、コントロールページの再描画と再配置の問題が含まれています

新しい CSS プロパティ contain を紹介する前に、読者はページの再描画と再配置が何であるか...

Vue での ElementUI の使用に関する詳細な説明

ログイン + セッションストレージエフェクト表示ログインに成功すると、ユーザー ID がフロントエン...

すべてまたは逆の選択機能を実現するJavaScript

この記事では、全選択または選択を反転する機能を実現するためのJavaScriptの具体的なコードを参...

Vueフォームバインディングとコンポーネントの詳細な説明

目次1. 双方向データバインディングとは1. データの双方向バインディングを実装する必要があるのはな...

Linux ドメイン ネーム サービス DNS 設定方法

DNSとはDNS の正式名称は Domain Name System で、ドメイン名解決システムを意...

Vue でよく使われる高階関数と包括的な例

1. 配列のよく使われる高階関数配列があり、その配列に対して次の操作を実行したいとします。 100 ...

カルーセル例の JS 実装

この記事では、カルーセルチャートの小さなケースを実装するためのJSの具体的なコードを参考までに共有し...

最小限のルートファイルシステムを構築するためにbusyboxを移植するための詳細な手順

Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。ステップ1: ディレクトリ構造を作成...

MySQL 起動時に「サーバーは PID ファイルを更新せずに終了しました」というエラーが報告される理由の詳細な分析

多くの人が MySQL の起動時にこのエラーに遭遇しています。まず、このエラーの前提は、サービス ス...

Docker Consul コンテナ サービスの更新と見つかった問題の概要

目次1. コンテナサービスの更新とDockerコンサルの検出1. サービス登録と検出とは何ですか? ...

フィボナッチ数列のJavaScript出力を実装する方法

目次トピック分析する基本的な解決策基本的な再帰再帰最適化要約するトピック私たちが答えなければならない...