VACUUM - Amazon Athena

VACUUM

VACUUM문은 스냅샷 만료분리된 파일 제거를 수행하여 Apache Iceberg 테이블에서 테이블 유지 관리를 수행합니다.

참고

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에 발생합니다. CREATEINSERT 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 테이블 관리 단원을 참조하세요.