詳細なMySQLのスロークエリログ解析

MySQLのスロークエリログには、応答時間を記録するために使用されるのMySQLが提供するログは、MySQLではしきい値文を超え、特に長いSQLのlong_query_timeの値よりも実行するために指し、スロークエリログに記録されますです。Long_query_timeデフォルトでは、以上の10Sのステートメントを実行していることを意味する、10です。デフォルトでは、MySQLデータベースは、スロークエリログを開始していない、我々はそれを必要とチューニングされていない場合、スロークエリログは、多かれ少なかれ、いくつかを持ってオープンしますので、一般的に、この機能をアクティブにすることはお勧めしません、もちろん、手動でパラメータを設定する必要がありますパフォーマンスに影響を与えます。スロークエリログファイルはロギングをサポートするために書かれている、また、データベースのテーブルにロギングをサポートしています。

MySQLの定義スロークエリは、
出力実行計画をEXPLAINを除き、クエリパフォーマンスのMySQL文を解析するために、あなたはまた、クエリに文を作ることができますMySQLのレコードの下に指定した時間が、我々はより多くの指定された時間のSQLクエリと呼ばれるよりなり超える「スロークエリ。」

MySQLのスロークエリを反映
遅いクエリが主に長い復帰時間が>クエリに1秒のクエリが遅いと呼ぶことができるされるように、低速、通常の意味で反映されます。スロークエリは、CPU、メモリの消費量が高すぎる原因となります。データベースサーバは、突然の圧力は確かに一定の遅いクエリによって引き起こされる、懸念しているほとんどの場合、あまりにも素晴らしいです。

MySQLのスロークエリオープン
1.現在の状況スロークエリの設定を確認してください

#表示が遅いクエリ時間、デフォルトの10秒、1秒に以下のダウンをお勧めします
MySQLは>「long_query_time」のような変数を表示します。
+ ----------------- + ------- + ---
|変数名|価値|
+ ----------------- + ---------- +
| long_query_time | 1.000000 |
+ ----- + ---------- + ------------
SET(0.00秒)に1行

slow_query_log値が関数である、#表示スロークエリ構成は、オンされA。
MySQLの> "SLOW %%"のような変数を表示します。
+ ----------------------------------- + - + --------------------
|変数名|価値|
+ ----------------------- + ---------------------- + ------------
| log_slow_admin_statements | OFF |
| log_slow_filter | |
| log_slow_rate_limit | 1 |
| log_slow_rate_type |セッション|
| log_slow_slave_statements | OFF |
| Log_slow_sp_statements | ON |
| log_slow_verbosity | |
| max_slowlog_files | 0 |
| max_slowlog_size | 0 |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_always_write_time | 10.000000 |
| slow_query_log_file | /tmp/slow_querys.log |
| slow_query_log_use_global_control | |
+ - ---------------------------------- + --------------- + -------
SETで14行(0.01秒)

2.どのように私はスロークエリ機能を有効に行う
方法を:サーバー上のmy.cnfファイルのMySQLの設定ファイルを見つけ、約コンテンツ、などのメリットで、その後のmysqld追加モジュール有効のままになり、MySQLのプロセスを再起動する必要はありません。

my.cnfのvimの
[mysqldを]
slow_query_log = ON
パスの#defineスロークエリログ
slow_query_log_file = /tmp/slow_querys.log
#問い合わせはスロークエリも何秒チェックを定義し、私は5.6を使用すると、以下に設定することを可能にした後、1秒でここで定義しました1秒以上、例えば0.1秒
long_query_time。1 =
、オープン要求は、確認するために#を動的に変更することができるログの多くが生成され、デフォルトでオフになって、クエリ低速記録にクエリを記録されたインデックスを使用するか否かを設定するために使用され
#ログ・クエリを、未using-インデックスの
管理命令は遅いクエリに記録されます。例OPTIMEZE表の場合、ALTER TABLEは、需要のデフォルトでは、OPEN LOOKオフ、ログの多くを持って動的に変更することができます
。#ログ-スロー管理者-文を

してからMySQLへのサーバを再起動し、これはスロークエリログのケースを見て、次のコマンドによって行われます。

/tmp/slow_querys.logは、tail -f
1
方法2:グローバル変数を変更することによって処理mysqlの、そうされることの利点は、それを実行するためにmysqlのSQLスクリプトへのログインをMySQLサーバを再起動しませんが、再起動が失敗した後。

#スロークエリ機能を有効にし、1がオンで、0がオフになっている
MySQLの> SET、株式会社フリーはslow_query_log = 1参加;
#私は5.6を使用すると、以下1秒以上に設定することができます後、それは、1秒で、ここで定義され、スロークエリも何秒の問い合わせにチェック定義し、例えば、0.1秒
のMySQL> SET =グローバルlong_query_time 1;
は、スロークエリログのパス定義
のMySQL>グローバルslow_query_log_file SETは'/ tmpに/ slow_querys.log' =;
シャットダウン機能:セットグローバルslow_query_log = 0;
その後、コマンドをクリックすると表示が正常に行われました
MySQLの>「ロング%」のような表示変数;
MySQLの>「遅い%」のような表示変数;
#テーブルにスロークエリレコードを設定する
の#setグローバルlog_output =「テーブル」;

特に注意がlong_query_time設定で、サポート5.6を設定した後それは少し無理になるように0.1秒よりも、その記録の詳細レベル、ご自身のニーズ、比較的大規模なデータベースの容量、より0.1秒以上に依存します。

MYSQLスロークエリログレコードが定義された
直接MySQLのスロークエリログの分析を表示、例えば、我々はslow_query.log -f尾の内側に内容を見ることができます

テール-f slow_query.log
#時間:午前16時22分11秒110107
ホスト@#ユーザー:ルート[ルート] @ localhostの[]
#Query_time:9.869362 Lock_time:0.000035 Rows_sent:1 Rows_examined:6261774
SETタイムスタンプ= 1294388531;
SELECT COUNT(*)ep_friendsから、

字段意义解析:

解析されたSQLクエリ、ユーザーおよびサードラインIP接続を実行するための最初の行、二行目のSQLクエリの実行時間、接続情報は、我々は、いくつかのより多くの有用な情報を記録:
- Query_time、今回SQLの実装、長い遅く
- Lock_time、MySQLサーバの段階(ないストレージエンジン段階で)テーブルロック待機時間
- Rows_sent、クエリによって返される行の数
- Rows_examined行の数、クエリの検査、長いコースは、より多くの時間がかかり
四行目セットのタイムスタンプは、本当の意味ではなく、最初の行と対応する実行時間を持っていません。
5行目およびそれ以降のすべての行(第二#時間:前)、記録情報のSQLステートメントの実行SQLは非常に長くすることができるからです。

ログ解析法のMYSQLスロークエリ
スロークエリログは明らかに十分なされているが、多くの場合に、当社のロギングが唯一のSQLはありませんが、ない統計は、これらの年の1を参照すると推定されている場合、この時間はあなたが統計を行う必要があり、多くの、多くの部分があるかもしれません私たちは分析しました。

方法:使用mysqlコマンド解析プログラムはmysqldumpslow来る
:例を
mysqldumpslow -SC 10 -tを/ tmp / SLOW-ログ
10ほとんどのSQL文の出力数を記録し、上記一般スロークエリレコードフォーマットの結果ここではあまり違いは、詳細な分析を拡大することではありません。

パラメータ解像度:

分析パラメータ:
-s:ソートされた方法で、サブパラメータは次の通りであり
、即ち、記録周波数、時間、クエリ時間、ソートに返されるレコードの数に応じて:C、T、L、R&LTを
、AC、AT、アルAR:それぞれのフラッシュバックを表し;
-t:どのように多くの以前のデータに戻り、ここでデータを返す手段10(それは10言うことができる)
-gは:、、規則的なパターンマッチングの背後書くことができ、大文字と小文字を区別しません例えば:
/パス/ mysqldumpslow -SR 10 -t / TMP / SLOWログ、最大戻りレコードセット10個のクエリを得ました。
/パス/ mysqldumpslow -st -t 10 -g / TMP /スローログ、「参加左」 時間順左がクエリに参加含む10前者により得られています。


オプション2:PT(Perconaツールキット)ツールの統計分析のためにPT-クエリはダイジェスト。
perlの本で書かれたスクリプトは、必見の最初のPTツールをインストール興味を持っているPTツールセット、友人にそこにインストールされている場合にのみ、Percona社によって製造されています。スロークエリファイルの直接分析は、次の手順を実行します。

slow_querys.log> t.txt PT-クエリダイジェスト


まだSQLで多くのレコードがある可能性があるため、まだそれはファイルに出力し、あまりにも具体的な説明を参照することが推奨され、激しい見えます。

参考:https://blog.csdn.net/enweitech/article/details/80239189
https://blog.51cto.com/arthur376/1948944

説明リンクします。https://blog.csdn.net/mr_lisj/java/記事/詳細/ 93867681

 

おすすめ

転載: www.cnblogs.com/yangfei123/p/12651543.html