Iceberg テーブルの最適化 - Amazon Athena

Iceberg テーブルの最適化

Iceberg テーブルにデータが蓄積するにつれて、ファイルを開くために必要な処理時間が長くなるため、クエリの効率が徐々に低下します。テーブルに delete files が含まれている場合は、追加の計算コストが発生します。Iceberg では、delete files には行レベルの削除が格納され、エンジンは削除した行をクエリ結果に適用する必要があります。

Iceberg テーブルでのクエリのパフォーマンスを最適化するために、Athena はテーブルメンテナンスコマンドとして手動圧縮をサポートしています。圧縮によって、表の内容を変更することなく、テーブルの構造レイアウトが最適化されます。

OPTIMIZE

OPTIMIZE table REWRITE DATA 圧縮アクションは、関連する削除ファイルのサイズと数に基づいて、データファイルをより最適化されたレイアウトに書き換えます。構文とテーブルプロパティの詳細については、「OPTIMIZE」を参照してください。

次の例では、削除ファイルをデータファイルにマージし、ターゲットファイルサイズに近いファイルを生成します。ここでは、category の値が c1 です。

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUMスナップショットの有効期限切れ孤立ファイルの削除を行います。これらのアクションにより、メタデータのサイズが小さくなり、現在のテーブル状態にないファイルのうち、テーブル用に指定された保持期間よりも古いファイルが削除されます。構文の詳細については、「VACUUM」を参照してください。

次の例では、テーブルプロパティを使用して過去 3 日間のデータを保持するようにテーブル iceberg_table を設定し、VACUUM を使用して古いスナップショットを期限切れにし、孤立ファイルをテーブルから削除します。

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table