すべてのプロダクト
Search
ドキュメントセンター

PolarDB:X-Engine 形式へのアーカイブ

最終更新日:Feb 11, 2026

ビジネスデータが増加するにつれて、標準の InnoDB テーブルに、アクセス頻度が低いウォームデータおよびコールドデータを含むすべてのデータを格納すると、ストレージコストが増大します。一方で、これらのデータを外部ストレージへアーカイブすると、オンラインでの読み取り・書き込み・分析機能が失われます。PolarDB for MySQL では、X-Engine を活用したデータ階層化(Data Tiering)機能を提供しています。テーブル全体または特定のパーティションを、高圧縮率を実現する X-Engine に変換することで、同一テーブル内に InnoDB(ホットデータ)と X-Engine(ウォーム/コールドデータ)を混在させたハイブリッドストレージが可能になります。これにより、オンラインアクセス性能を維持したままストレージコストを削減できます。X-Engine に格納されたデータは、引き続き DML 書き込みおよびオンライン DDL スキーマ変更をサポートします。

仕組み

PolarDB for MySQL では、単一のパーティションテーブル内の異なるパーティションに対して、それぞれ異なるストレージエンジンを指定できます。その動作は以下のとおりです:

  • データ階層化:アクセス頻度が高い「ホット」データのパーティションは、読み取り・書き込み性能を最適化するために InnoDB で保持します。一方、アクセス頻度が低い「ウォーム」または「コールド」データのパーティションは X-Engine へ移行します。

  • スマートルーティング:テーブルに対するクエリ実行時、PolarDB はクエリ条件に基づき、自動的に該当するパーティションおよびそのストレージエンジンへリクエストをルーティングします。この処理はアプリケーション層に対して完全に透明です。

  • 高いデータ圧縮率:X-Engine は高度な圧縮アルゴリズムおよびオプションの 列のストア 形式を採用し、極めて高いデータ圧縮率を実現します。これにより、物理ディスク領域の使用量が大幅に削減され、コスト低減につながります。

適用範囲

本機能を利用する前に、ご利用の PolarDB for MySQL クラスターが以下のバージョン要件を満たしていることをご確認ください。

  • 標準テーブルのアーカイブの場合:

    • MySQL 8.0.1、リビジョン 8.0.1.1.31 以降。

    • MySQL 8.0.2、リビジョン 8.0.2.2.12 以降。

  • パーティションテーブルのアーカイブの場合:MySQL 8.0.2、リビジョン 8.0.2.2.12 以降。

  • X-Engine 列指向テーブル へのアーカイブの場合:MySQL 8.0.2、リビジョン 8.0.2.2.33 以降。

事前準備

データのアーカイブを実行する前に、以下の手順を完了してください。

  1. 高圧縮エンジン(X-Engine)の有効化:これにより、テーブルまたはパーティションに対して X-Engine をストレージエンジンとして選択できるようになります。

  2. ハイブリッドパーティショニングの有効化:マイナーエンジンバージョンが 8.0.2.2.33 より前のクラスターの場合、クォータセンター にアクセスします。クォータ ID polardb_mysql_hybrid_partition のクォータを検索し、対応する 操作 列の [要求] をクリックして、本機能を有効化します。

標準テーブルのアーカイブ

InnoDB から X-Engine へ、非パーティションテーブル全体(データおよびストレージエンジンを含む)を変換します。

構文

ALTER TABLE table_name ENGINE=engine_name[ TABLE_FORMAT=COLUMN];

パラメーター説明

パラメーター

パラメーター説明

table_name

X-Engine へアーカイブするテーブルの名前。

engine_name

ストレージエンジンの名前。

  • XEngine:X-Engine 形式へアーカイブします。

  • InnoDB:InnoDB エンジンへ復元します。

TABLE_FORMAT

X-Engine のデータストレージフォーマット(任意)。

  • ROW(デフォルト):行指向テーブル。

  • COLUMN:列指向テーブル。

  • 標準テーブル t1 を X-Engine 行指向テーブルへアーカイブします:

    ALTER TABLE t1 ENGINE=XEngine;
  • 標準テーブル t1 を X-Engine 列指向テーブルへアーカイブします:

    ALTER TABLE t1 ENGINE=XEngine TABLE_FORMAT=COLUMN;
  • 標準テーブル t1 を InnoDB エンジンへ復元します:

    ALTER TABLE t1 ENGINE=InnoDB;

パーティションテーブルのアーカイブ

特定パーティションのアーカイブ

パーティションテーブル内の特定のパーティション(通常、古いコールドデータを格納するパーティション)を X-Engine へアーカイブします。これにより、ホットデータとコールドデータの階層化が実現され、ハイブリッドパーティションテーブルが構成されます。

構文

ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = XEngine[ TABLE_FORMAT=COLUMN];

パラメーター説明

パラメーター

パラメーター説明

table_name

X-Engine へアーカイブするテーブルの名前。

part_name

X-Engine へアーカイブするパーティションの名前。

TABLE_FORMAT

X-Engine のデータストレージフォーマット(任意)。

  • ROW(デフォルト):ローストア。

  • COLUMN:列指向テーブル。

  • パーティションテーブル t1 のパーティション p1 を X-Engine ローストア形式へアーカイブします:

    ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine;
  • パーティションテーブル t1 のパーティション p1 を X-Engine 列指向テーブルへアーカイブします:

    ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine TABLE_FORMAT=COLUMN;

InnoDB エンジンへの復元

構文

ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);

パラメーター説明

パラメーター

パラメーター説明

table_name

ハイブリッドパーティションテーブルの名前。

part_name

InnoDB エンジンへ復元するパーティションの名前。

partition_definition

復元対象パーティションの元の partition_definition と一致させる必要があります。

説明

パーティション定義内の ENGINE 句は任意です。省略した場合、デフォルトのストレージエンジン(テーブル全体のエンジンと同じく InnoDB)が適用されます。明示的に ENGINE=InnoDB を指定した場合は、InnoDB エンジンが使用されます。

X-Engine でアーカイブ済みのパーティションテーブル t1 のパーティション p1 のデータを、InnoDB エンジンへ復元します。

ALTER TABLE t1 REORGANIZE PARTITION p1 INTO(PARTITION p1 VALUES LESS THAN(100));

本番環境に適用

  • ベストプラクティス:コストとクエリ性能のバランスを取るため、アクセス頻度が低いウォームデータまたはコールドデータのみを X-Engine へアーカイブしてください。ログやイベントトラッキングデータなど、書き込み負荷が高く圧縮率も期待できるデータには、X-Engine の列のストア形式(TABLE_FORMAT=COLUMN)をご利用ください。

  • リスク緩和:データ移行(ALTER TABLE)はリソースを多く消費する処理です。オンラインで実行可能ですが、本番ワークロードのパフォーマンスに影響を与えないよう、非ピーク時間帯に実行してください。

  • モニタリングおよびアラート設定:アーカイブ実行中は、SHOW FULL PROCESSLIST; コマンドを用いて、データ定義言語(DDL)の進行状況を追跡してください。また、コンソール上で CPU 使用率、IOPS(1 秒あたりの入出力操作数)、ディスク領域などの主要メトリックをモニターしてください。