Mysql性能分析ツールSHOW PROFILE、SHOW STATUS
4684 ワード
前言
実際の応用では,SHOW STATUS,SHOW PROFILE,遅いクエリログのエントリをチェックする3つの方法で単一のクエリを解析する.
SHOW PROFILE
Mysql5.バージョン1以降で、デフォルト機能は無効になり、SET profiling=1コマンドでオンになります.
≪機能|Feature|emdw≫:サーバ上で実行されるすべての文で、消費時間と実行ステータスの変更に関するデータが測定されます.クエリーがサーバにコミットされると、このツールはプロファイル情報を一時テーブルに記録し、このテーブルには1から始まる自己増加idがあります.注意:show profileなどの文はprofilingされません.つまり、自分でProfilingは生成されません.
コマンド:show profileを開くかどうかをクエリーし、デフォルトで閉じる
SHOW VARIABLES LIKE 'profiling';
show profileを閉じる
:SET profiling = 1;
:SET profiling = 0;
注意:profileを停止し、profilingパラメータを設定するか、sessionが終了するとprofilingが自動的に閉じます.
クエリー構文:show profile[パラメータ[,パラメータ...]]for query [Query_ID]
すべてのメジャーのクエリープロファイル情報をクエリー
SHOW PROFILE;
クエリーIDのクエリープロファイル情報の指定
SHOW PROFILE FOR QUERY id;
クエリidのクエリを指定するcpuとblockプロファイル情報
SHOW PROFILE cpu, block io FOR QUERY id;
クエリidは2のクエリプロファイリング情報であり、最大消費時間の逆順序で並べ替えられる
set @query_id=2;
SELECT STATE, SUM(DURATION) AS Total_R,
-> ROUND(
-> 100 * SUM(DURATION) /
-> (SELECT SUM(DURATION)
-> FROM INFORMATION_SCHEMA.PROFILING
-> WHERE QUERY_ID = @query_id
-> ), 2) AS Pct_R,
-> COUNT(*) AS Calls,
-> SUM(DURATION) / COUNT(*) AS "R/Call"
-> FROM INFORMATION_SCHEMA.PROFILING
-> WHERE QUERY_ID = @query_id
-> GROUP BY STATE
-> ORDER BY Total_R DESC;
パラメータ情報
SHOW STATUSコマンドは、いくつかのカウンタを返し、セッションレベル、サーバレベルのカウンタを返し、クエリーの回数を統計します.
SHOW GLOBAL STATUSサーバー起動から計算開始までの問合せ回数統計を表示する
注意:1.カウンタによって可視範囲が異なり、グローバルなカウンタもSHOW STATUSの結果に表示されます.2.SHOW STATUS自体もテンポラリテーブルを作成します.3.SHOW STATUS自体もカウンタに集計されます.これらのカウンタは、どの操作コストが高いか、または消費時間が多いかを推測することができます.最も有用なカウンタには、ハンドルカウンタ(handler counter)、ゼロタイムファイル、テーブルカウンタが含まれます.
常用命令リセットカウンターFLUSH STATUS;
クエリの表示時間がlong_を超えましたquery_time秒のクエリの数.show status like 'slow_queries';
slowを超える作成時間の表示launch_time秒のスレッド数.show status like 'slow_launch_threads';
すぐに取得できないテーブルのロックの回数を表示します.この値が高く、パフォーマンスに問題がある場合は、まずクエリーを最適化し、テーブルを分割するか、レプリケーションを使用します.show status like 'table_locks_waited';
すぐに取得したテーブルのロックの回数を表示します.show status like 'table_locks_immediate';
アクティブな(非スリープ状態)スレッドの数を表示します.show status like 'threads_running';
接続を処理するために作成されたスレッドの数を表示します.もしThreads_createdは大きく、threadを増やすかもしれません.cache_size値.show status like 'threads_created';
現在開いている接続の数を表示します.show status like 'threads_connected';
スレッドキャッシュ内のスレッドの数を表示します.show status like 'threads_cached';
MySQLに接続しようとする接続数show status like'connectionsを確認します.
delete文の実行数show[global]status like'com_を表示delete';
update文の実行数の表示
show [global] status like 'com_update';
Insert文の実行数の表示
show [global] status like 'com_insert';
select文の実行数の表示
show [global] status like 'com_select';
--MySQLの今回の起動後の実行時間(単位:秒)を表示
show status like 'uptime';
詳細パラメータ:MySQL運転状態show status中国語詳細