VACUUM
VACUUM
문은 스냅샷 만료
참고
VACUUM
은 트랜잭션이며 Athena 엔진 버전 3의 Apache Iceberg 테이블에 대해서만 지원됩니다.
VACUUM
명령문은 스토리지 사용량을 줄여 Iceberg 테이블을 최적화합니다. VACUUM
사용에 관한 자세한 내용은 Iceberg 테이블 최적화 부분을 참조하세요. 단, VACUUM
문은 Amazon S3에 API를 직접적으로 호출하므로 Amazon S3에 대한 관련 요청에 요금이 부과됩니다.
주의
스냅샷 만료 작업을 실행하면 더 이상 만료된 스냅샷으로 이동할 수 없습니다.
시놉시스
Iceberg 테이블에 더 이상 필요하지 않은 데이터 파일을 제거하려면 다음 구문을 사용합니다.
VACUUM [database_name
.]target_table
-
VACUUM
은 Iceberg 데이터가 Amazon S3 버킷이 아닌 Amazon S3 폴더에 있을 것으로 예상합니다. 예를 들어 Iceberg 데이터가s3://amzn-s3-demo-bucket/myicebergfolder/
가 아닌s3://amzn-s3-demo-bucket
/에 있는 경우VACUUM
문이 실패하고GENERIC_INTERNAL_ERROR: Path missing in file system location:
라는 오류 메시지가 표시됩니다.s3://amzn-s3-demo-bucket
-
VACUUM
에서 데이터 파일을 삭제할 수 있으려면 쿼리 실행 역할에 Iceberg 테이블, 메타데이터, 스냅샷 및 데이터 파일이 있는 버킷에 대한s3:DeleteObject
권한이 있어야 합니다. 권한이 없는 경우VACUUM
쿼리는 성공하지만 파일은 삭제되지 않습니다. -
이름이 밑줄로 시작하는 테이블(예:
_mytable
)에서VACUUM
을 실행하려면 다음 예제와 같이 테이블 이름을 백틱으로 묶습니다. 테이블 이름 앞에 데이터베이스 이름을 붙이는 경우 데이터베이스 이름을 백틱으로 묶지 마세요. 큰따옴표는 백틱 대신 사용할 수 없다는 점에 유의하세요.이 동작은 특히
VACUUM
에 발생합니다.CREATE
및INSERT INTO
문에서는 밑줄로 시작하는 테이블 이름에 백틱을 사용하지 않아도 됩니다.VACUUM `_mytable` VACUUM my_database.`_mytable`
작업 수행됨
VACUUM
은 다음 작업을 수행합니다.
-
vacuum_max_snapshot_age_seconds
테이블 속성에 지정된 시간보다 오래된 스냅샷을 제거합니다. 기본적으로 이 속성은 432000초(5일)로 설정됩니다. -
보존 기간 내에 있지 않고
vacuum_min_snapshots_to_keep
테이블 속성에 지정된 수를 초과하는 스냅샷을 제거합니다. 기본 값은 1입니다.CREATE TABLE
문에서 이러한 테이블 속성을 지정할 수 있습니다. 테이블이 생성된 이후에 ALTER TABLE SET TBLPROPERTIES 문을 사용하여 테이블을 업데이트할 수 있습니다. -
스냅샷 제거로 인해 연결할 수 없는 메타데이터 및 데이터 파일을 제거합니다.
vacuum_max_metadata_files_to_keep
테이블 속성을 설정하여 보존할 이전 메타데이터 파일 수를 구성할 수 있습니다. 기본 값은 100입니다. -
vacuum_max_snapshot_age_seconds
테이블 속성에 지정된 시간보다 오래된 분리된 파일을 제거합니다. 분리된 파일은 테이블의 데이터 디렉터리에서 테이블 상태에 포함되지 않는 파일입니다.
Athena의 Apache Iceberg 테이블 생성 및 관리에 대한 자세한 내용은 Iceberg 테이블 생성 및 Iceberg 테이블 관리 단원을 참조하세요.