MySQLのSQL解析

A、SQLの実行時間分析
SQL文を実行するのに長い時間を見つけることによって、あなたは視覚的にデータ層の効率を見つけることができます。

システムの実装により参照するには1.ショーPROCESSLIST
のMySQL>ショーPROCESSLIST;
+ ---- + ------ + ------ + ----------- + - + ------ + ------- + ------- + ------------------
| ID |ユーザー|ホスト|デシベル|コマンド|時間|国|インフォメーション|
+ ---- + ------ + ------ + ----------- + --------- ------------------ + ------- + ------ + +
| 2 |ルート|ローカルホスト| NULL |問い合わせ| 0 |のinit | PROCESSLISTショー|
+ ---- + ------ + ------ + ----------- + --------- + ----- - + ------------------ + ------- +
SET(0.01秒)に1行
プロファイリングによって観察される2
SQLコマンドが見ています実行時間は、スピードを直接見ることができます。

2.1表示プロファイリングがオンになっている
分析のための0またはクローズ

MySQLの>プロファイリング@@選択します。
+ ------------- +
| @@プロファイリング|
+ ------------- +
| 0 |
+ ------------- +

2.2打开工具
のMySQL>セットプロファイリング= 1。
クエリOK、0行が影響を受け、1つの警告(0.01秒)

MySQLの> SELECT @@プロファイリング;
+ ------------- +
| @@プロファイリング|
+ ------------- +
| 1 |
+ ---- --------- +

2.3チェックSQLの実行時間
のMySQL> [プロファイル;
+ ---------- + ------------ + ---- + ------------------------
| QUERY_ID |期間|問い合わせ|
+ ---------- + ------ + ---------------------------- + ------
| 1 | 0.00173700 | SELECT * IPから|
| 2 | 0.00057500 |ポートIPからSELECT porxy、|
+ ---------- + ------------ + ----------------- ----------- +

2.4チェックSQL時間のかかる詳細
な構文:クエリQUERY_IDのためのショープロフィール

MySQLの>クエリ1のためのプロフィールを見る;
+ ---------------------- + ---------- +
|ステータス|期間|
+ - + ---------- + ---------------------
| | 0.000073 |開始
0.000031 | |権限の確認| ---かどうかを確認しますキャッシュ
|テーブルを開く| 0.000207 | ---オープンテーブル
|初期化| 0.000067 | ---初期設定
|システムロック| 0.000040 | ---ロックシステム
|最適化| 0.000005 | ---クエリの最適化
|統計| 0.000021 |
|準備| 0.000015 | ---準備
|実行| 0.000003 | ---実行
|データ送信| 0.000993 |
|終了| 0.000006 |
|クエリエンド| 0.000007 |
|閉じるテーブル| 0.000011 |
| 0.000169 | |アイテムを解放
|クリーンアップ| 0.000089 |
+ ---------------------- + ---------- +
より具体的な情報は、このテーブルをINFORMATION_SCHEMA.PROFILINGから得られます。この表は、様々なステップや関連情報のすべての実行時間を記録します。構文:

SELECT * = QUERY_IDからQUERY_ID WHERE INFORMATION_SCHEMA.PROFILING;
1つの
3スロークエリーログ
SQLの名前が示唆、スロークエリログMySQLは、実行時間が設定値(デフォルト10秒)を超えているを記録しました。この機能は、手動で開く必要がありますが、開封後はいくつかのパフォーマンスの損失が発生します。

遅いターンかどうかを確認するために3.1ログ
slow_query_logはデフォルトではオフになって、それはスロークエリログを表しますが無効になっている、slow_query_logの値を設定することで開くことができます。構文:設定されたグローバルslow_query_log = 1

MySQLの> '%slow_query_log%'のような変数を表示。
+ --------------------- + --------------------------- --------------------------- +
| 変数名| バリュー|
+ --------------------- + --------------------------- --------------------------- +
| slow_query_log | OFF |
| slow_query_log_file | /usr/local/var/mysql/xueweihandeMacBook-Air-slow.log |
+ --------------------- + --------------------------- -------------------------- +
集合における2行(0.11秒)

MySQLの>セットグローバルslow_query_log = 1;
クエリOK、影響を受けた0行(0.03秒)

MySQLの>の表示変数LIKE '%% slow_query_log';
+ --------------------- + ---------------- + --------------------------------------
|変数名|価値|
+ ----- ---------------- + --------------------------------- + ---------------------
| slow_query_log | ON |
| slow_query_log_file | /usr/local/var/mysql/xueweihandeMacBook-Air-slow.log |
+ - ------------------- ------------------------------ + ------------------------ +
3.2提供タイムアウト
設定構文:設定されたグローバルlong_query_time = 4
チェック構文:「long_query_time」のようなショーの変数
注:修正、あなたが変更された値を参照するには、新しいセッションを再接続するか、開く必要があります。

常設、変更のmy.cnf

= 1 slow_query_log
long_query_time = 10
slow_query_log_file = /パス/ mysql_slow.log
3.3その他のパラメータ
3.3.1 log_outputの
パラメーターが指定されているログ保存。log_output =「FILE」のログファイルを表しますが格納されている、デフォルト値は「FILE」です。log_output =「TABLE」がデータベースに格納されたログを示し、そのような情報は、ログテーブルmysql.slow_logに書き込まれます。log_output =「ファイル、表」:同時に両方のログのMySQLデータベース・ストレージなどのカンマで区切られて配置されたときを支持します 。記録されたファイルは、スロークエリログを有効にする必要がありますので、より多くのシステムリソースを消費するだけでなく、高いシステム性能を得ることができるようにする必要がありますよりも、専用のログテーブルシステムへのロギングは、それがファイルにその優先順位をお勧めします。

3.3.2ログのクエリ-使用していない -indexesを
インデックスクエリを使用していないにもスロークエリログ(別売)に記録されています。チューニング場合は、このオプションを有効にすることをお勧めします。また、それは実際には、SQL全索引スキャンの使用はスロークエリログに記録されます、このパラメータを開きました。

3.3.3 log_slow_admin_statements
遅い管理文は以下のような表とALTER TABLE等、スロークエリログに入金ANALYZEかどうかを示します

3.4解析ツールmysqldumpslow
MySQLが遅いログ解析ツールmysqldumpslowを提供します。

;表しは-s方法ソート
アクセス回数:C
L:ロック時間
R:リターンレコード
T:時間クエリ
のAl:平均ロック時間
AR:平均返されるレコードの数
で:平均クエリ時間
トップ-t nが意味され、すなわちどのように多くのデータ前部を返すために、
-gが規則的なパターンマッチングの後ろに書くことができ、ケース非感受性;

3.4.1例示的なコマンド
取得戻りレコードセット10 SQLアップ:mysqldumpslow -SR -t 10 /データベース / MySQLの/ mysql06_slow.log

mysqldumpslow -sc -t 10 /database/mysql/mysql06_slow.log:最も訪問10 SQLを取得します。

/database/mysql/mysql06_slow.logを「左の参加」mysqldumpslow -st -t 10 -g:左側に接続して取得は、時間順の10の前によると、クエリが含まれています

また、提案の組み合わせ、これらのコマンドを使用して|とより、そうでない場合があるかもしれない例が表示されスクレーパー:mysqldumpslow -SR -t 20 /mysqldata/mysql/mysql06-slow.log |もっと

 

おすすめ

転載: www.cnblogs.com/Struts-pring/p/11880400.html
おすすめ