MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

27.12.5 パフォーマンススキーマステージイベントテーブル

パフォーマンススキーマは、ステートメントの解析、テーブルのオープン、filesort 操作の実行など、ステートメント実行プロセス中のステップであるステージを計測します。 ステージは SHOW PROCESSLIST によって表示されるか、または INFORMATION_SCHEMA.PROCESSLIST テーブルに表示されるスレッドの状態に対応します。 ステージは、状態値が変化したときに開始および終了します。

イベント階層内では、待機イベントはステージイベント内にネストされ、ステージイベントはステートメントイベント内にネストされ、ステートメントイベントはトランザクションイベント内にネストされます。

これらのテーブルはステージイベントを格納します。

次の各セクションでは、ステージイベントテーブルについて説明します。 ステージイベントに関する情報を集計するサマリーテーブルもあります。セクション27.12.18.2「ステージサマリーテーブル」を参照してください。

3 つのステージイベントテーブル間の関係の詳細は、セクション27.9「現在および過去のイベントのパフォーマンススキーマテーブル」 を参照してください。

ステージイベント収集の構成

ステージイベントを収集するかどうかを制御するには、関連するインストゥルメントおよびコンシューマの状態を設定します:

ステージインストゥルメントは、ステートメントの進捗情報を提供するインストゥルメント以外、デフォルトでは無効になっています。 例:

mysql> SELECT NAME, ENABLED, TIMED
       FROM performance_schema.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/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 sort index                      | NO      | NO    |
| stage/sql/creating table                           | NO      | NO    |
| stage/sql/Creating tmp table                       | NO      | NO    |
+----------------------------------------------------+---------+-------+

ステートメントの進捗情報を提供するステージイベントインストゥルメントは、デフォルトで有効化され、時間設定されます:

mysql> SELECT NAME, ENABLED, TIMED
       FROM performance_schema.setup_instruments
       WHERE ENABLED='YES' AND NAME LIKE "stage/%";
+------------------------------------------------------+---------+-------+
| NAME                                                 | ENABLED | TIMED |
+------------------------------------------------------+---------+-------+
| stage/sql/copy to tmp table                          | YES     | YES   |
| stage/sql/Applying batch of row changes (write)      | YES     | YES   |
| stage/sql/Applying batch of row changes (update)     | YES     | YES   |
| stage/sql/Applying batch of row changes (delete)     | YES     | YES   |
| stage/innodb/alter table (end)                       | YES     | YES   |
| stage/innodb/alter table (flush)                     | YES     | YES   |
| stage/innodb/alter table (insert)                    | YES     | YES   |
| stage/innodb/alter table (log apply index)           | YES     | YES   |
| stage/innodb/alter table (log apply table)           | YES     | YES   |
| stage/innodb/alter table (merge sort)                | YES     | YES   |
| stage/innodb/alter table (read PK and internal sort) | YES     | YES   |
| stage/innodb/buffer pool load                        | YES     | YES   |
| stage/innodb/clone (file copy)                       | YES     | YES   |
| stage/innodb/clone (redo copy)                       | YES     | YES   |
| stage/innodb/clone (page copy)                       | YES     | YES   |
+------------------------------------------------------+---------+-------+

ステージコンシューマはデフォルトで無効にされています。

mysql> SELECT *
       FROM performance_schema.setup_consumers
       WHERE NAME LIKE 'events_stages%';
+----------------------------+---------+
| NAME                       | ENABLED |
+----------------------------+---------+
| events_stages_current      | NO      |
| events_stages_history      | NO      |
| events_stages_history_long | NO      |
+----------------------------+---------+

サーバー起動時のステージイベント収集を制御するには、my.cnf ファイルで次のような行を使用します:

実行時にステージイベント収集を制御するには、setup_instruments テーブルと setup_consumers テーブルを更新します:

特定のステージイベントのみを収集するには、対応するステージインストゥルメントのみを有効にします。 特定のステージイベントテーブルに対してのみステージイベントを収集するには、ステージインストゥルメントを有効にしますが、目的のテーブルに対応するステージコンシューマのみを有効にします。

イベント収集の構成の詳細は、セクション27.3「パフォーマンススキーマ起動構成」 および セクション27.4「パフォーマンススキーマ実行時構成」 を参照してください。

ステージイベント進捗情報

パフォーマンススキーマのステージイベントテーブルには、ともに各行にステージ進捗インジケータを提供する 2 つのカラムが含まれています:

インストゥルメントの進捗情報が指定されていない場合、各カラムは NULL です。 情報が使用可能な場合、その解釈はインストゥルメントの実装によって完全に異なります。 「パフォーマンススキーマ」テーブルは、進捗データを格納するコンテナを提供しますが、メトリック自体のセマンティクスについては想定しません:

ステージイベント進捗インジケータのインストゥルメンテーションでは、次のいずれかの動作を実装できます:

stage/sql/copy to tmp table インストゥルメントは、進捗インジケータがどのように機能するかを示します。 ALTER TABLE ステートメントの実行中に stage/sql/copy to tmp table ステージが使用され、コピーするデータのサイズによっては、このステージが長時間実行される可能性があります。

テーブルコピータスクには終了 (すべての行がコピーされます) が定義されており、stage/sql/copy to tmp table ステージは指定されたバインド済進捗情報にインスツルメント処理されます: 使用される作業ユニットはコピーされた行数で、WORK_COMPLETEDWORK_ESTIMATED はどちらも意味があり、その比率はタスク完了率を示します。

インストゥルメントおよび関連するコンシューマを有効にするには、次のステートメントを実行します:

UPDATE performance_schema.setup_instruments
SET ENABLED='YES'
WHERE NAME='stage/sql/copy to tmp table';

UPDATE performance_schema.setup_consumers
SET ENABLED='YES'
WHERE NAME LIKE 'events_stages_%';

進行中の ALTER TABLE ステートメントの進行状況を確認するには、events_stages_current テーブルから選択します。