MySQL 5.6.3 現在、パフォーマンススキーマは、ステートメントの解析、テーブルのオープン、または filesort
操作の実行などのステートメント実行プロセス中のステップであるステージをインストゥルメントします。ステージは SHOW PROCESSLIST
によって表示されるか、または INFORMATION_SCHEMA.PROCESSLIST
テーブルに表示されるスレッドの状態に対応します。ステージは、状態値が変化したときに開始および終了します。
イベント階層内で、待機イベントはステージイベント内にネストし、ステージイベントはステートメントイベント内にネストします。
これらのテーブルはステージイベントを格納します。
events_stages_current
: 現在のステージイベントevents_stages_history
: 各スレッドの最新のステージイベントevents_stages_history_long
: 全体の最新のステージイベント
次のセクションでそれらのテーブルについて説明します。ステージイベントに関する情報を集計するサマリーテーブルもあります。セクション22.9.9.2「ステージサマリーテーブル」を参照してください。
ステージイベント構成
ステージイベントの収集を有効にするには、関連インストゥルメントとコンシューマを有効にします。
setup_instruments
テーブルには、stage
で始まる名前を持つインストゥルメントが格納されます。これらのインストゥルメントはデフォルトで無効にされています。例:
mysql> SELECT * FROM setup_instruments WHERE NAME RLIKE 'stage/sql/[a-c]';
+----------------------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+----------------------------------------------------+---------+-------+
| stage/sql/After create | NO | NO |
| stage/sql/allocating local table | NO | NO |
| stage/sql/altering table | NO | NO |
| stage/sql/committing alter table to storage engine | NO | NO |
| stage/sql/Changing master | NO | NO |
| stage/sql/Checking master version | NO | NO |
| stage/sql/checking permissions | NO | NO |
| stage/sql/checking privileges on cached query | NO | NO |
| stage/sql/checking query cache for query | NO | NO |
| stage/sql/cleaning up | NO | NO |
| stage/sql/closing tables | NO | NO |
| stage/sql/Connecting to master | NO | NO |
| stage/sql/converting HEAP to MyISAM | NO | NO |
| stage/sql/Copying to group table | NO | NO |
| stage/sql/Copying to tmp table | NO | NO |
| stage/sql/copy to tmp table | NO | NO |
| stage/sql/Creating delayed handler | NO | NO |
| stage/sql/Creating sort index | NO | NO |
| stage/sql/creating table | NO | NO |
| stage/sql/Creating tmp table | NO | NO |
+----------------------------------------------------+---------+-------+
ステージイベントの収集を変更するには、関連インストゥルメントの ENABLED
および TIMING
カラムを変更します。例:
mysql> UPDATE setup_instruments SET ENABLED = 'YES', TIMED = 'YES'
-> WHERE NAME = 'stage/sql/altering table';
setup_consumers
テーブルには現在および最近のステージイベントテーブル名に対応する名前を持つコンシューマ値が格納されます。これらのコンシューマはステージイベントのコレクションをフィルタ処理するために使用できます。ステージコンシューマはデフォルトで無効にされています。
mysql> SELECT * FROM setup_consumers WHERE NAME LIKE '%stages%';
+----------------------------+---------+
| NAME | ENABLED |
+----------------------------+---------+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
+----------------------------+---------+
すべてのステージコンシューマを有効にするには、次を実行します。
mysql> UPDATE setup_consumers SET ENABLED = 'YES'
-> WHERE NAME LIKE '%stages%';
setup_timers
テーブルには、ステージイベントのタイミングの単位を示す stage
の NAME
値のある行が格納されます。デフォルトの単位は NANOSECOND
です。
mysql> SELECT * FROM setup_timers WHERE NAME = 'stage';
+-------+------------+
| NAME | TIMER_NAME |
+-------+------------+
| stage | NANOSECOND |
+-------+------------+
タイミングの単位を変更するには、TIMER_NAME
値を変更します。
mysql> UPDATE setup_timers SET TIMER_NAME = 'MICROSECOND'
-> WHERE NAME = 'stage';
イベント収集の構成に関する追加情報については、セクション22.2「パフォーマンススキーマ構成」を参照してください。