테이블 유지 관리
테이블 유지 관리
S3 Tables는 개별 테이블의 관리와 성능을 향상시키는 유지 관리 작업을 제공해요. 다음 옵션은 테이블 버킷의 모든 테이블에서 기본적으로 활성화되어 있어요. S3 테이블에 유지 관리 구성 파일을 지정해 이 옵션들을 편집하거나 비활성화할 수 있어요.
이 구성을 편집하려면 s3tables:GetTableMaintenanceConfiguration과 s3tables:PutTableMaintenanceConfiguration 권한이 필요해요.
CloudTrail 로그를 통해 테이블에 대한 S3 Tables 자동 유지 관리 작업을 추적할 수 있어요. 자세한 내용은 S3 Tables 유지 관리의 CloudTrail 관리 이벤트 문서를 참고하세요.
- 컴팩션(Compaction)
- 스냅샷 관리(Snapshot management)
- 고려 사항과 제한 사항
본문
컴팩션 (Compaction)
컴팩션은 테이블 수준에서 구성되며, 여러 개의 작은 객체를 더 적고 더 큰 객체로 결합해 Apache Iceberg 쿼리 성능을 향상시켜요. 객체를 결합할 때 컴팩션은 테이블의 행 수준 삭제 효과도 적용해요.
컴팩션은 모든 테이블에서 기본적으로 활성화되며, 기본 대상 파일 크기는 512MB이고, 64MB에서 512MB 사이의 사용자 지정 값을 지정할 수 있어요. 컴팩션된 파일은 테이블의 가장 최근 스냅샷으로 기록돼요.
컴팩션은 Apache Parquet, Avro, ORC 파일 유형을 지원해요.
컴팩션 전략 (Compaction Strategies)
쿼리 패턴과 테이블 정렬 순서에 따라 쿼리 성능을 더욱 높일 수 있는 여러 컴팩션 전략 중에서 선택할 수 있어요.
S3 Tables는 테이블에 대해 다음 컴팩션 전략을 지원해요.
- Auto (기본값) — Amazon S3가 테이블 정렬 순서에 따라 최상의 컴팩션 전략을 선택해요. 이는 모든 테이블의 기본 컴팩션 전략이에요. 메타데이터에 정의된 정렬 순서가 있는 테이블의 경우 auto는 자동으로 sort 컴팩션을 적용해요. 정렬 순서가 없는 테이블의 경우 auto는 기본적으로 binpack 컴팩션을 사용해요.
- Binpack — 작은 파일을 더 큰 파일로 결합하며, 일반적으로 100MB 이상의 크기를 목표로 하고 보류 중인 삭제를 적용해요. 이는 정렬되지 않은 테이블의 기본 컴팩션 전략이에요.
- Sort — 지정된 열을 기준으로 데이터를 구성하며, 컴팩션 중 열을 계층적으로 자동 정렬해 필터링 작업의 쿼리 성능을 향상시켜요. 이 전략은 쿼리가 특정 열을 자주 필터링할 때 권장돼요. 이 전략을 사용하면 테이블 속성에
sort_order가 정의된 경우 S3 Tables가 열에 계층적 정렬을 자동으로 적용해요. - Z-order — 여러 속성을 단일 스칼라 값으로 혼합해 정렬에 사용함으로써 데이터 구성을 최적화해 다차원에 걸친 효율적인 쿼리를 가능하게 해요. 이 전략은 여러 차원을 동시에 쿼리해야 할 때 권장돼요. 이 전략은 Iceberg 테이블 속성에서
sort_order테이블 속성을 사용해 정렬 순서를 정의해야 해요.
컴팩션에는 추가 비용이 발생해요. z-order와 sort 컴팩션 전략은 binpack보다 비용이 더 높을 수 있어요. 자세한 내용은 Amazon S3 요금 페이지의 요금 정보를 참고하세요.
컴팩션 예시
다음 예시는 테이블 컴팩션 구성 방법을 보여줘요.
스냅샷 관리 (Snapshot management)
스냅샷 관리는 테이블의 활성 스냅샷 수를 결정해요. 이는 MinimumSnapshots(기본값 1)와 MaximumSnapshotAge(기본값 120시간)를 기반으로 해요. 스냅샷 관리는 이러한 구성에 따라 테이블 스냅샷을 만료시키고 제거해요.
스냅샷이 만료되면 Amazon S3는 그 스냅샷에서만 참조되는 객체를 noncurrent(비현재)로 표시해요. 이러한 noncurrent 객체는 참조되지 않은 파일 제거 정책의 NoncurrentDays 속성에 지정된 일수가 지난 후 삭제돼요.
noncurrent 객체의 삭제는 영구적이며 복구할 수 있는 방법이 없어요.
noncurrent로 표시된 객체를 보거나 복구하려면 AWS Support에 문의해야 해요. AWS Support에 연락하는 방법에 대한 정보는 AWS 연락처 또는 AWS Support 문서를 참고하세요.
스냅샷 관리는 오직 해당 테이블에 대한 참조만으로 테이블에서 삭제할 객체를 결정해요. 테이블 외부에서 이러한 객체에 대한 참조가 있더라도 스냅샷 관리가 객체를 삭제하는 것을 막지는 않아요.
스냅샷 관리는 metadata.json 파일이나 ALTER TABLE SET TBLPROPERTIES SQL 명령을 통해 Apache Iceberg 테이블 속성으로 구성한 보존 값을 지원하지 않아요. 다음 조건 중 하나라도 존재하면 스냅샷 관리는 전체 테이블에 대해 실패하고 Amazon S3는 어떤 스냅샷도 만료시키거나 제거하지 않아요.
- 사용자 정의 태그 또는 분기 — 테이블에 사용자 정의 태그나 분기가 존재하면 스냅샷 관리는 전체 테이블에 대해 실패해요. 태그나 분기의 보존 기간이 짧더라도 마찬가지예요. 자동 스냅샷 만료를 복원하려면 테이블에서 모든 사용자 정의 태그와 분기를 제거하세요.
- Iceberg 스냅샷 보존 테이블 속성 —
history.expire.max-snapshot-age-ms또는history.expire.min-snapshots-to-keep속성이 Apache Iceberg 테이블 속성으로 설정된 경우, 구성된 값과 관계없이 스냅샷 관리는 전체 테이블에 대해 실패해요. 자동 스냅샷 만료를 복원하려면 다음 속성을 제거하세요.
ALTER TABLE mydb . mytable UNSET TBLPROPERTIES ('history.expire.max-snapshot-age-ms');
ALTER TABLE mydb . mytable UNSET TBLPROPERTIES ('history.expire.min-snapshots-to-keep');
스냅샷 관리 실패를 진단하려면 GetTableMaintenanceJobStatus API를 사용하거나 다음 AWS CLI 명령을 실행하세요. 스냅샷 관리가 실패하면 응답에 실패 원인을 설명하는 FAILED 상태와 메시지가 포함돼요.
aws s3tables get-table-maintenance-job-status \
--table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
--namespace my_namespace \
--name my_table
스냅샷 관리는 테이블 수준에서만 구성할 수 있어요. 자세한 내용은 Amazon S3 요금 페이지의 요금 정보를 참고하세요.
스냅샷 관리 예시
다음 예시는 테이블 스냅샷 관리 구성 방법을 보여줘요.
자세한 내용은 AWS CLI Command Reference의 put-table-maintenance-configuration을 참고하세요.
고려 사항과 제한 사항
컴팩션과 스냅샷 관리의 추가 고려 사항과 제한 사항에 대해 자세히 알아보려면 유지 관리 작업의 고려 사항과 제한 사항 문서를 참고하세요.
S3 Tables는 Parquet 행 그룹 기본 크기인 128MB를 적용해요.
더 알아보기 (Learn more)
- 테이블 버킷 유지 관리
- S3 Tables 유지 관리
- S3 Tables 유지 관리 작업 상태