

# VACUUM
<a name="vacuum-statement"></a>

`VACUUM`문은 [스냅샷 만료](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots) 및 [분리된 파일 제거](https://iceberg.apache.org/docs/latest/spark-procedures/#remove_orphan_files)를 수행하여 Apache Iceberg 테이블에서 테이블 유지 관리를 수행합니다.

**참고**  
`VACUUM`은 트랜잭션이며 Athena 엔진 버전 3의 Apache Iceberg 테이블에 대해서만 지원됩니다.

`VACUUM` 명령문은 스토리지 사용량을 줄여 Iceberg 테이블을 최적화합니다. `VACUUM` 사용에 관한 자세한 내용은 [Iceberg 테이블 최적화](querying-iceberg-data-optimization.md) 부분을 참조하세요. 단, `VACUUM` 문은 Amazon S3에 API를 직접적으로 호출하므로 Amazon S3에 대한 관련 요청에 요금이 부과됩니다.

**주의**  
스냅샷 만료 작업을 실행하면 더 이상 만료된 스냅샷으로 이동할 수 없습니다.

## 시놉시스
<a name="vacuum-statement-synopsis"></a>

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\$1INTERNAL\$1ERROR: 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`
  ```

## 작업 수행됨
<a name="vacuum-statement-operations-performed"></a>

`VACUUM`은 다음 작업을 수행합니다.
+ `vacuum_max_snapshot_age_seconds` 테이블 속성에 지정된 시간보다 오래된 스냅샷을 제거합니다. 기본적으로 이 속성은 432000초(5일)로 설정됩니다.
+ 보존 기간 내에 있지 않고 `vacuum_min_snapshots_to_keep` 테이블 속성에 지정된 수를 초과하는 스냅샷을 제거합니다. 기본 값은 1입니다.

  `CREATE TABLE` 문에서 이러한 테이블 속성을 지정할 수 있습니다. 테이블이 생성된 이후에 [ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) 문을 사용하여 테이블을 업데이트할 수 있습니다.
+ 스냅샷 제거로 인해 연결할 수 없는 메타데이터 및 데이터 파일을 제거합니다. `vacuum_max_metadata_files_to_keep` 테이블 속성을 설정하여 보존할 이전 메타데이터 파일 수를 구성할 수 있습니다. 기본 값은 100입니다.
+ `vacuum_max_snapshot_age_seconds` 테이블 속성에 지정된 시간보다 오래된 분리된 파일을 제거합니다. 분리된 파일은 테이블의 데이터 디렉터리에서 테이블 상태에 포함되지 않는 파일입니다.

Athena의 Apache Iceberg 테이블 생성 및 관리에 대한 자세한 내용은 [Iceberg 테이블 생성](querying-iceberg-creating-tables.md) 및 [Iceberg 테이블 관리](querying-iceberg-managing-tables.md) 단원을 참조하세요.