Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  パフォーマンススキーマを使用した InnoDB テーブルの ALTER TABLE の進行状況のモニタリング

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

15.16.1 パフォーマンススキーマを使用した InnoDB テーブルの ALTER TABLE の進行状況のモニタリング

Performance Schema を使用して、InnoDB テーブルの ALTER TABLE 進捗を監視できます。

ALTER TABLE の様々なフェーズを表す 7 つのステージイベントがあります。 各ステージイベントでは、ALTER TABLE 操作全体の様々なフェーズの進行に応じて、WORK_COMPLETED および WORK_ESTIMATED の累積合計がレポートされます。 WORK_ESTIMATED は、ALTER TABLE が実行するすべての作業を考慮した式を使用して計算され、ALTER TABLE の処理中に改訂できます。 WORK_COMPLETED および WORK_ESTIMATED の値は、ALTER TABLE によって実行されるすべての作業の抽象表現です。

発生順に、ALTER TABLE ステージイベントには次のものが含まれます:

  • stage/innodb/alter table (read PK and internal sort): このステージは、ALTER TABLE が読取り - 主キーフェーズにある場合にアクティブになります。 これは、主キーの推定ページ数に設定された WORK_COMPLETED=0 および WORK_ESTIMATED から始まります。 ステージが完了すると、WORK_ESTIMATED は主キーの実際のページ数に更新されます。

  • stage/innodb/alter table (merge sort): このステージは、ALTER TABLE 操作によって追加されたインデックスごとに繰り返されます。

  • stage/innodb/alter table (insert): このステージは、ALTER TABLE 操作によって追加されたインデックスごとに繰り返されます。

  • stage/innodb/alter table (log apply index): このステージには、ALTER TABLE の実行中に生成された DML ログの適用が含まれます。

  • stage/innodb/alter table (flush): このステージが開始される前に、フラッシュリストの長さに基づいて、より正確な見積りで WORK_ESTIMATED が更新されます。

  • stage/innodb/alter table (log apply table): このステージには、ALTER TABLE の実行中に生成された同時 DML ログの適用が含まれます。 このフェーズの期間は、テーブルの変更の程度によって異なります。 テーブルに対して同時 DML が実行されなかった場合、このフェーズは即時です。

  • stage/innodb/alter table (end): ALTER TABLE の実行中にテーブルに対して実行された DML の再適用など、フラッシュフェーズ後に表示された残りの作業が含まれます。

注記

InnoDB ALTER TABLE ステージイベントでは、現在空間インデックスの追加は考慮されていません。

パフォーマンススキーマを使用した ALTER TABLE のモニタリングの例

次の例は、stage/innodb/alter table% ステージイベントインストゥルメントおよび関連するコンシューマテーブルを有効にして ALTER TABLE の進行状況を監視する方法を示しています。 パフォーマンススキーマステージイベントインストゥルメントおよび関連コンシューマについては、セクション27.12.5「パフォーマンススキーマステージイベントテーブル」 を参照してください。

  1. stage/innodb/alter% インストゥルメントを有効にします:

    Press CTRL+C to copy
    mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/alter%'; Query OK, 7 rows affected (0.00 sec) Rows matched: 7 Changed: 7 Warnings: 0
  2. ステージイベントコンシューマテーブル (events_stages_currentevents_stages_history および events_stages_history_long を含む) を有効にします。

    Press CTRL+C to copy
    mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%'; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0
  3. ALTER TABLE 操作を実行します。 この例では、employees サンプルデータベースの employees テーブルに middle_name カラムが追加されます。

    Press CTRL+C to copy
    mysql> ALTER TABLE employees.employees ADD COLUMN middle_name varchar(14) AFTER first_name; Query OK, 0 rows affected (9.27 sec) Records: 0 Duplicates: 0 Warnings: 0
  4. パフォーマンススキーマ events_stages_current テーブルをクエリーして、ALTER TABLE 操作の進行状況を確認します。 表示されるステージイベントは、現在進行中の ALTER TABLE フェーズによって異なります。 WORK_COMPLETED カラムには、完了した作業が表示されます。 WORK_ESTIMATED カラムには、残りの作業の見積りが表示されます。

    Press CTRL+C to copy
    mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM performance_schema.events_stages_current; +------------------------------------------------------+----------------+----------------+ | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | +------------------------------------------------------+----------------+----------------+ | stage/innodb/alter table (read PK and internal sort) | 280 | 1245 | +------------------------------------------------------+----------------+----------------+ 1 row in set (0.01 sec)

    ALTER TABLE 操作が完了すると、events_stages_current テーブルは空のセットを返します。 この場合、events_stages_history テーブルをチェックして、完了した操作のイベントデータを表示できます。 例:

    Press CTRL+C to copy
    mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM performance_schema.events_stages_history; +------------------------------------------------------+----------------+----------------+ | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | +------------------------------------------------------+----------------+----------------+ | stage/innodb/alter table (read PK and internal sort) | 886 | 1213 | | stage/innodb/alter table (flush) | 1213 | 1213 | | stage/innodb/alter table (log apply table) | 1597 | 1597 | | stage/innodb/alter table (end) | 1597 | 1597 | | stage/innodb/alter table (log apply table) | 1981 | 1981 | +------------------------------------------------------+----------------+----------------+ 5 rows in set (0.00 sec)

    前述のように、WORK_ESTIMATED 値は ALTER TABLE 処理中に改訂されました。 初期ステージの完了後の見積作業は 1213 です。 ALTER TABLE の処理が完了すると、WORK_ESTIMATED は実際の値 (1981) に設定されました。