テーブルのメンテナンス
S3 Tables は、個別のテーブルの管理とパフォーマンスを向上させるためのメンテナンスオペレーションを提供します。次のオプションは、テーブルバケットのすべてのテーブルでデフォルトで有効になっています。オプションを編集または無効化するには、S3 テーブルのメンテナンス設定ファイルを指定します。
この設定を編集するには、s3tables:GetTableMaintenanceConfiguration
および s3tables:PutTableMaintenanceConfiguration
アクセス許可が必要です。
圧縮
圧縮はテーブルレベルで設定され、複数の小さなオブジェクトを少数の大きなオブジェクトに結合して Apache Iceberg クエリパフォーマンスを向上させます。オブジェクトを組み合わせると、圧縮はテーブル内の行レベル削除の効果も適用します。
圧縮はすべてのテーブルでデフォルトで有効になっており、デフォルトのターゲットファイルサイズは 512MB、または 64MB から 512MB の間で指定したカスタム値です。圧縮されたファイルは、テーブルの最新のスナップショットとして書き込まれます。
圧縮戦略
複数の圧縮戦略から選択でき、クエリパターンとテーブルのソート順序に応じて、クエリのパフォーマンスをさらに向上させることができます。
S3 Tables は、テーブルに対して次の圧縮戦略をサポートしています。
-
自動 (デフォルト)
-
Amazon S3 は、テーブルのソート順序に基づいて最適な圧縮戦略を選択します。これは、すべてのテーブルのデフォルトの圧縮戦略です。
-
メタデータにソート順序が定義されているテーブルの場合、
auto
は自動的にsort
圧縮を適用します。 -
ソート順のないテーブルの場合、
auto
はデフォルトでbinpack
圧縮を使用します。
-
-
ビンパック
-
小さなファイルをより大きなファイルに結合します。通常は 100MB を超えるサイズをターゲットにしながら、保留中の削除を適用します。これは、ソートされていないテーブルのデフォルトの圧縮戦略です。
-
-
並べ替え
-
圧縮中に階層によって自動的にソートされる指定された列に基づいてデータを整理し、フィルタリングされたオペレーションのクエリパフォーマンスを向上させます。この戦略は、クエリが特定の列を頻繁にフィルタリングする場合に推奨されます。この戦略を使用すると、テーブルプロパティで
sort_order
が定義されている場合、S3 Tables は列に階層ソートを自動的に適用します。
-
-
Z オーダー
-
ソートに使用できる単一のスカラー値に複数の属性を統合することでデータ整理を最適化し、複数のディメンションにまたがって効率的なクエリを実行できるようにします。この戦略は、複数のディメンションにまたがるデータを同時にクエリする必要がある場合に推奨されます。この戦略では、
sort_order
テーブルプロパティを使用して Iceberg テーブルプロパティでソート順序を定義する必要があります。
-
圧縮には追加料金が発生します。詳細については、「Amazon S3 の料金
圧縮の例
次の例は、テーブル圧縮の設定を示しています。
- AWS CLI を使用して圧縮ターゲットファイルサイズを設定するには
-
最小ターゲット圧縮ファイルサイズは 64MB、最大サイズは 512MB です。
次の例では、
PutTableMaintenanceConfiguration
API を使用してターゲットファイルのサイズを 256MB に変更します。aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-bucket1
\ --type icebergCompaction \ --namespacemynamespace
\ --nametesttable
\ --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'詳細については、AWS CLI コマンドリファレンスの「put-table-maintenance-configuration
」を参照してください。 - AWS CLI を使用して圧縮戦略を設定するには
-
次の例では、
PutTableMaintenanceConfiguration
API を使用して圧縮戦略をsort
に変更します。圧縮を設定するときは、auto
、binpack
、sort
、またはz-order
の圧縮戦略から選択できます。注記
圧縮戦略を
sort
またはz-order
に設定するには、次の前提条件が必要です。Iceberg テーブルプロパティで定義されたソート順序。
s3tables:GetTableData
アクセス許可
aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespacemynamespace
\ --nametesttable
\ --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'詳細については、AWS CLI コマンドリファレンスの「put-table-maintenance-configuration
」を参照してください。 - AWS CLI を使用して圧縮を無効にするには
-
次の例では、
PutTableMaintenanceConfiguration
API を使用して圧縮を無効にします。aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespacemynamespace
\ --nametesttable
\ --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'詳細については、AWS CLI コマンドリファレンスの「put-table-maintenance-configuration
」を参照してください。
スナップショットの管理
スナップショット管理は、テーブルのアクティブなスナップショットの数を決定します。これは、MinimumSnapshots
(デフォルトでは 1) と MaximumSnapshotAge
(デフォルトでは 120 時間) に基づいています。スナップショット管理は、これらの設定に基づいてテーブルスナップショットを有効期限切れにし、削除します。
スナップショットの有効期限が切れると、Amazon S3 はそのスナップショットによってのみ参照されるすべてのオブジェクトを最新でないものとしてマークします。これらの最新でないオブジェクトは、参照されていないファイル削除ポリシーの NoncurrentDays
プロパティで指定された日数が経過した後に削除されます。
注記
以前のオブジェクトの削除は永続的であり、これらのオブジェクトを復元する方法はありません。
最新でないとマークされたオブジェクトを表示または復旧するには、AWS サポート に連絡する必要があります。AWS サポート へのお問い合わせの詳細については、AWS サポート ドキュメント
スナップショット管理は、そのテーブルのみを参照して、テーブルから削除するオブジェクトを決定します。テーブルの外からこれらのオブジェクトを参照しても、スナップショット管理によるオブジェクトの削除は妨げられません。
注記
スナップショット管理では、ブランチやタグベースの保持を含め、metadata.json
ファイル内の Iceberg テーブルプロパティとして、または ALTER TABLE SET TBLPROPERTIES
SQL コマンドを介して設定した保持値はサポートされていません。ブランチまたはタグベースの保持ポリシーを設定する場合、または PutTableMaintenanceConfiguration
API で設定された値よりも長い保持ポリシーを metadata.json
ファイルに設定する場合、スナップショット管理は無効になります。このような場合、S3 はスナップショットの有効期限が切れたり削除されたりしないため、ストレージ料金が発生しないように、スナップショットを手動で削除するか、Iceberg テーブルからプロパティを削除する必要があります。
スナップショット管理は、テーブルレベルでのみ設定できます。詳細については、「Amazon S3 の料金
スナップショット管理の例
次の例は、テーブルスナップショット管理の設定を示しています。
- AWS CLI を使用してスナップショット管理を設定するには
-
次の例では、
PutTableMaintenanceConfiguration
API を使用してMinimumSnapshots
を 10 に設定し、MaximumSnapshotAge
を 2,500 時間に設定します。aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket \ --namespacemy_namespace
\ --namemy_table
\ --type icebergSnapshotManagement \ --value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}' - AWS CLI を使用してスナップショット管理を無効にするには
-
次の例では、
PutTableMaintenanceConfiguration
API を使用してスナップショット管理を無効にします。aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket \ --namespacemy_namespace
\ --namemy_table
\ --type icebergSnapshotManagement \ --value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'
詳細については、AWS CLI コマンドリファレンスの「put-table-maintenance-configuration
考慮事項と制限事項
圧縮とスナップショット管理に関するその他の考慮事項と制限の詳細については、「メンテナンスジョブに関する考慮事項と制限事項」を参照してください。
注記
S3 Tables は、parquet の row-group-default サイズである 128 MB を適用します。