データセットが増大するにつれて、アクセス頻度が極めて低い履歴レコード(コールドデータ)の保存により、Enterprise SSD(ESSD)のストレージコストが上昇します。データアーカイブ機能では、コールドテーブルおよびコールドインデックスを ESSD から Object Storage Service(OSS)バケットへ移動でき、パフォーマンスレベル 1(PL1)ESSD と比較してストレージコストを最大 80 % 削減できます。アーカイブされたデータは、読み取り専用インスタンス上でクエリ実行が可能です。
OSS へのデータアーカイブ後、アーカイブ済みテーブルに対するクエリは読み取り専用インスタンスでのみサポートされます。本機能を有効化する前に、アーカイブ戦略を適切に計画してください。
仕組み
データアーカイブを有効化すると、RDS は以下の 2 つのストレージレイヤーを作成します:
| レイヤー | 表領域 | ストレージ | 用途 |
|---|---|---|---|
/data ディレクトリ | pg_default | 一般 ESSD | アクティブで、頻繁にアクセスされるデータ |
/cold-data ディレクトリ | rds_oss | OSS バケット | コールドで、アクセス頻度が低いデータ |
ALTER TABLE および ALTER INDEX の DDL 文を使用して、各レイヤー間でデータを移動します。標準テーブルおよび子パーティションテーブルの両方がサポートされます。テーブルデータとインデックスデータは、転送時に個別に処理されます。
ワークフローの概要
前提条件の確認 — インスタンスが、バージョン、エディション、およびストレージ要件を満たしていることを確認します。
VACUUM の実行 — アーカイブ前にターゲットテーブルをクリーンアップし、OSS 上での autovacuum オーバーヘッドを防止します。
データアーカイブの有効化 — ApsaraDB RDS 購入ページまたはインスタンス詳細ページから本機能を有効化します。
テーブルおよびインデックスのアーカイブ —
ALTER TABLEおよびALTER INDEXを実行し、コールドデータをrds_oss表領域へ移動します。アーカイブ済みデータのクエリ実行 — 読み取り専用インスタンスを使用して、アーカイブ済みテーブルをクエリします。
アーカイブ済みデータの表示 — 「コールドストレージ管理」ページで、アーカイブ対象のデータベースを監視します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
インスタンスが PostgreSQL 12 以降 を実行していること
マイナーエンジンバージョンが 20240530 以降(PostgreSQL 15 の場合、20240229 以降 で十分)であること(バージョン更新については、「マイナーエンジンバージョンの更新」をご参照ください)
インスタンスが RDS Basic Edition または RDS High-availability Edition を実行していること
インスタンスが standard または YiTian のプロダクトタイプを使用していること
このインスタンスは、汎用ESSD をストレージタイプとして使用しています(インスタンスでESSDを使用している場合は、最初にストレージタイプを汎用ESSDに変更する必要があります)
課金方法が サブスクリプション または 従量課金 であること
インスタンスの CPU コア数が 8 コア以上 であること
インスタンスが韓国(ソウル)、UAE(ドバイ)、またはイギリス(ロンドン)リージョンに配置されていないこと
データアーカイブの有効化
データアーカイブは、新規インスタンス作成時、または既存の一般 ESSD を使用するインスタンスに対して有効化できます。
ApsaraDB RDS 購入ページ(新規インスタンス)
ApsaraDB RDS 購入ページ に移動します。
ストレージタイプ を 一般 ESSD に設定します。構成 セクションで、データアーカイブ を有効化します。

インスタンス詳細ページ(既存のインスタンス)
ApsaraDB RDS コンソールにログインし、「インスタンス」ページに移動します。上部ナビゲーションバーで、ご利用のインスタンスのリージョンを選択します。該当インスタンスを見つけ、その ID をクリックします。
インスタンス詳細ページで、一般 ESSD の設定 を 基本情報 セクションからクリックします。ダイアログボックス内の データアーカイブ カードで、データアーカイブ を有効化します。

データアーカイブの有効化により、約 30 秒間の一時的な切断が発生します。非ピーク時間帯に実行し、アプリケーションが自動再接続を実行できるよう設定されていることを確認してください。
データのアーカイブおよび取得
テーブルをアーカイブする前に、VACUUM を実行してクリーンアップを行ってください。OSS のストレージパフォーマンスは ESSD と大きく異なり、OSS 表領域における autovacuum の効率は低くなります。アーカイブ前にすべてのページで all_visible および all_frozen フラグを設定することで、アーカイブ済み表領域に対する autovacuum の実行を防止できます。
ステップ 1:対象テーブルに対する VACUUM の実行
VACUUM (FREEZE) table_name;VERBOSE オプションを使用すると、クリーンアップの進行状況を表示し、完全なクリーンアップが完了したことを確認できます:
VACUUM (FREEZE, INDEX_CLEANUP on) table_name;PostgreSQL バージョンごとの追加パラメーター:
| PostgreSQL バージョン | 追加パラメーター | 目的 |
|---|---|---|
| 14 以降 | PROCESS_TOAST | TOAST テーブルのクリーンアップ |
| 16 以降 | PROCESS_MAIN | プライマリテーブルのクリーンアップ |
インスタンスに長時間トランザクションまたはレプリケーションスロットが存在する場合、特定のトランザクション ID を保持する必要があるため、完全なクリーンアップが不可能になることがあります。
VACUUM の詳細については、「VACUUM」をご参照ください。
ステップ 2:OSS へのデータ移動(アーカイブ)
VACUUM の実行が完了したら、テーブルおよびそのインデックスを rds_oss 表領域へ移動します:
-- テーブルをアーカイブ
ALTER TABLE $tableName SET tablespace rds_oss;
-- インデックスをアーカイブ
ALTER INDEX $indexName SET tablespace rds_oss;ステップ 3:OSS からのデータ取得(アンアーカイブ)
データを ESSD ストレージへ戻すには、以下を実行します:
-- テーブルを取得
ALTER TABLE $tableName SET tablespace pg_default;
-- インデックスを取得
ALTER INDEX $indexName SET tablespace pg_default;アーカイブ済みデータのクエリ実行
アーカイブ済みデータは、読み取り専用インスタンスでのみアクセス可能です。読み取り専用インスタンスに接続し、通常通りクエリを実行します。
アーカイブ済みデータの表示
インスタンス ページに移動します。上部ナビゲーションバーで、ご利用のインスタンスのリージョンを選択します。該当インスタンスを見つけ、その ID をクリックします。
左側ナビゲーションウィンドウで、コールドストレージ管理 をクリックします。
アーカイブレイヤー設定 セクションで、データアーカイブが有効化されているデータベースを確認します。

データアーカイブの無効化
インスタンス ページに移動します。上部ナビゲーションバーで、ご利用のインスタンスのリージョンを選択します。該当インスタンスを見つけ、その ID をクリックします。
インスタンス詳細ページで、一般 ESSD の設定 を 基本情報 セクションからクリックします。データアーカイブ カードで、データアーカイブ を無効化します。
データアーカイブの無効化により、約 30 秒間の一時的な切断が発生します。
OSS バケット内にアーカイブ済みテーブルが存在する状態では、データアーカイブを無効化できません。無効化する前に、アーカイブ済みテーブルをオンラインテーブルへ戻すか、DROP してください。
課金
課金の詳細
データアーカイブは従量課金方式で課金され、OSS に保存されたデータ量に基づいて請求されます。
| リージョン | RDS Basic Edition | RDS High-availability Edition | RDS Cluster Edition(ノード単位) |
|---|---|---|---|
| 中国(杭州)、中国(上海)、中国(青島)、中国(北京)、中国(張家口)、中国(フフホト)、中国(ウランチャブ)、中国(深セン)、中国(河源)、中国(広州)、および中国(成都) | $0.000032/GB・時間 | $0.000065/GB・時間 | $0.000032/GB・時間 |
| 中国(香港)、日本(東京)、シンガポール、インドネシア(ジャカルタ)、およびドイツ(フランクフルト) | $0.000034/GB・時間 | $0.000068/GB・時間 | $0.000034/GB・時間 |
| フィリピン(マニラ)および米国(シリコンバレー) | $0.000058/GB・時間 | $0.000117/GB・時間 | $0.000058/GB・時間 |
| マレーシア(クアラルンプール) | $0.000057/GB・時間 | $0.000114/GB・時間 | $0.000057/GB・時間 |
| 米国(バージニア) | $0.000054/GB・時間 | $0.000108/GB・時間 | $0.000054/GB・時間 |
タイ(バンコク)、韓国(ソウル)、イギリス(ロンドン)、および UAE(ドバイ)リージョンでは、データアーカイブは利用できません。
大量のデータをアーカイブした後、未使用のESSD ストレージを削減して、コストをさらに削減できます。詳細については、「クラウドディスクを使用するApsaraDB RDS for PostgreSQL インスタンスのストレージ容量を削減する」をご参照ください。
制限事項
バックアップに関する制限
データアーカイブを有効化すると、以下のバックアップ機能に影響があります:
1 桁秒単位のバックアップはサポートされません。
クロスリージョンバックアップはサポートされません。
個別のデータベースおよびテーブルの復元では、アーカイブされていないデータのみが復元されます。
ダウンロード可能なバックアップセットには、アーカイブされていないデータのみが含まれます。
データアーカイブを有効化すると、バックアップおよび復元の速度が低下します。これは、システムが復元プロセス中にアーカイブ済みデータを復元する必要があるためです。
パフォーマンスに関する考慮事項
OSS へのアクセス遅延は最大 10 ms となり、ESSD の遅延より高くなります。RDS インスタンスのバッファープールまたはオペレーティングシステムのページキャッシュにキャッシュされたテーブルは、より高速に提供される可能性があります。
OSS からのデータ読み取りは、メモリおよび Elastic Compute Service(ECS)のネットワーク帯域幅を消費します。データ転送頻度およびアクセスパターンに応じて、適切に調整してください。
データアクセスに関する制限
アーカイブ済みデータには、以下のクエリ制限があります:
クエリ:読み取り専用インスタンスでのみサポートされます。