TL;DR

MySQL サーバの実行時の動作を監視する機能。待機、ステージ、ステートメント、トランザクションなどのサーバ内部のイベントを集め、performance_schema データベースのテーブルに記録する。

仕組み

Performance Schema はストレージエンジンとして実装されており、デフォルトで有効になっている。有効かどうかは次で確かめる。

SHOW VARIABLES LIKE 'performance_schema';

テーブルは、スレッドごとの最新のイベント(events_waits_current など)、直近のイベントの履歴(*_history、*_history_long)、全イベントの集計(events_waits_summary_global_by_event_name など)、監視対象のインスタンス(file_instances など)、監視の設定(setup_instruments、setup_consumers)に分かれる。何を計測するかは setup_instruments、計測した情報をどこに保存するかは setup_consumers で切り替える。

例

待機時間の合計が長いイベントを調べるには、集計のテーブルを使う。

SELECT EVENT_NAME, SUM_TIMER_WAIT
FROM performance_schema.events_waits_summary_global_by_event_name
ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;

注意点

イベントのタイマーの値はピコ秒単位の概算値である。

関連

出典