VACUUM - Amazon Athena

VACUUM

VACUUM ステートメントは、不要になったデータファイルを削除することにより、Apache Iceberg テーブルのテーブルメンテナンスを行います。

注記

VACUUM はトランザクションで、Athena エンジンバージョン 3 の Apache Iceberg テーブルでのみサポートされています。

VACUUM ステートメントを Iceberg テーブルで実行すると、不要になったデータファイルを削除し、メタデータのサイズとストレージの消費量を削減できます。VACUUM ステートメントは Amazon S3 に API 呼び出しを行うため、Amazon S3 への関連するリクエストに対して料金がかかることに注意してください。

警告

スナップショット有効期限切れオペレーションを実行すると、期限切れのスナップショットへのタイムトラベルができなくなります。

概要

Iceberg テーブルで不要になったデータファイルを削除するには、次の構文を使用します。

VACUUM [database_name.]target_table

アンダースコアで始まる名前 (例: _mytable) を持つテーブルで VACUUM を実行するには、次の例にあるようにテーブル名をバックティックで囲みます。テーブル名の前にデータベース名を付ける場合は、データベース名をバックティックで囲まないでください。バックティックの代わりに二重引用符を使用しても機能しないことに注意してください。

この動作は VACUUM に固有の動作です。CREATE および INSERT INTO ステートメントでは、アンダースコアで始まるテーブル名にバックティックは必要ありません。

VACUUM `_mytable` VACUUM my_database.`_mytable`

また、VACUUM は、Iceberg データが Amazon S3 バケットではなく Amazon S3 フォルダに格納されることを想定していることにも注意してください。例えば、Iceberg データが s3://DOC-EXAMPLE-BUCKET/myicebergfolder/ ではなく s3://DOC-EXAMPLE-BUCKET/ に格納されている場合、VACUUM ステートメントは「GENERIC_INTERNAL_ERROR: ファイルシステムロケーション: s3://DOC-EXAMPLE-BUCKET にパスがありません」というエラーで失敗します。

実行されたオペレーション

VACUUM では以下のオペレーションを実行します。

  • vacuum_max_snapshot_age_seconds テーブルプロパティで指定された時間よりも古いスナップショットを削除します。デフォルトでは、このプロパティは 432,000 秒 (5 日間) に設定されています。

  • 保持期間に含まれていないスナップショットのうち、vacuum_min_snapshots_to_keep テーブルプロパティで指定された数を超えているスナップショットを削除します。デフォルト は 1 です。

    これらのテーブルプロパティは CREATE TABLE ステートメントで指定できます。テーブルを作成した後、ALTER TABLE SET PROPERTIES ステートメントを使用してテーブルを更新できます。

  • スナップショットを削除した結果としてアクセスできなかったメタデータおよびデータファイルをすべて削除します。vacuum_max_metadata_files_to_keep テーブルプロパティを設定すると、保持する古いメタデータファイルの数を設定できます。デフォルト値は 100 です。

  • vacuum_max_snapshot_age_seconds テーブルプロパティで指定された時間より古い孤立ファイルを削除します。孤立ファイルとは、テーブルのデータディレクトリにある、テーブルステートの一部ではないファイルです。

Athena で Apache Iceberg テーブルを作成および管理する方法については、「Iceberg テーブルの作成」および「Iceberg テーブルの管理」を参照してください。