VACUUM
적용 대상: Databricks SQL Databricks Runtime
테이블 디렉터리에서 사용되지 않는 파일을 제거합니다.
참고 항목
이 명령은 Delta 또는 Apache Spark 테이블에서 작업하는지 여부에 따라 다르게 작동합니다.
델타 테이블에 대해 Vacuum 명령 실행
Delta 테이블과 연결된 디렉터리를 재귀적으로 비웁니다. 자세한 내용 및 제한 사항은 진공 상태에서 사용되지 않는 데이터 파일 제거를 참조하세요.
VACUUM
은 Delta에서 관리하지 않는 테이블 디렉터리의 모든 파일과 테이블에 대한 트랜잭션 로그의 최신 상태에 더 이상 존재하지 않으며 보존 임계값보다 오래된 데이터 파일을 제거합니다.
VACUUM
은 밑줄(_
)로 시작되는 모든 디렉터리를 건너뜁니다. 여기에는 _delta_log
가 포함됩니다. 밑줄로 시작되는 열에서 테이블을 분할하는 것은 이 규칙의 예외입니다. VACUUM
은 대상 Delta 테이블에 포함된 모든 유효한 파티션을 검색합니다. Delta 테이블 데이터 파일은 스토리지 시스템의 수정 타임스탬프가 아니라 Delta의 트랜잭션 로그 + 보존 시간에서 논리적으로 제거된 시간에 따라 삭제됩니다. 기본 임계값은 7일입니다.
Delta 테이블에서 Azure Databricks는 작업을 자동으로 트리거하지 VACUUM
.
Delta 테이블에서 VACUUM
을 실행하는 경우 지정된 데이터 보존 기간보다 이전 버전으로 다시 시간 이동 기능이 손실됩니다.
Warning
Databricks에 따르면 테이블에 대한 동시 읽기 권한자 또는 작성기가 오래된 스냅샷과 커밋되지 않은 파일을 계속 사용할 수 있으므로 보존 간격을 7일 이상으로 설정하는 것이 좋습니다.
VACUUM
이 활성 파일을 정리하는 경우 동시 판독기가 실패하거나, 더 나쁜 경우에는 VACUUM
이 아직 커밋되지 않은 파일을 삭제할 때 테이블이 손상될 수 있습니다. 가장 긴 동시 실행 트랜잭션보다 긴 간격과 모든 스트림이 테이블에 대한 최신 업데이트보다 지연될 수 있는 가장 긴 기간을 선택해야 합니다.
Delta Lake에는 위험한 VACUUM
명령을 실행할 수 없도록 해 주는 안전 검사가 있습니다. Databricks Runtime에서 지정하려는 보존 간격보다 오래 걸리는 작업이 이 테이블에서 수행되고 있지 않다고 확신하는 경우에는 Spark 구성 속성 spark.databricks.delta.retentionDurationCheck.enabled
를 false
로 설정하여 이 안전 검사를 해제할 수 있습니다.
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
Databricks Runtime 16.0 및 이전에서는 구문에 RETAIN num HOURS
이 DRY RUN
보다 앞서 와야 합니다.
Important
VACUUM
명령에 대한 보존 기간은 기본적으로 7일인 delta.deletedFileRetentionDuration
테이블 속성에 의해 결정됩니다.
즉 VACUUM
, 지난 7일 동안 델타 테이블 버전에서 더 이상 참조하지 않는 데이터 파일을 제거합니다.
더 긴 기간 동안의 시간 이동 지원과 같이 더 긴 기간 동안 데이터를 유지하려면 이 테이블 속성을 더 높은 값으로 설정합니다.
다음 예제에서는 이 임계값을 30일로 설정하는 방법을 보여줍니다.
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
매개 변수
-
기존 델타 테이블을 식별합니다. 이름에는 임시 사양 또는 옵션 사양이 포함되어서는 안됩니다.
RETAIN num HOURS
보존 임계값입니다.
DRY RUN
삭제할 최대 1000개의 파일 목록을 반환합니다.
FULL
또는LITE
적용 대상: Databricks Runtime 16.1 이상으로 표시됨
FULL
은 전체 모드에서 진공 작업을 실행합니다. 이렇게 하면 보존 기간 외의 데이터 파일과 테이블에서 참조하지 않는 테이블 디렉터리의 모든 파일이 삭제됩니다.LITE
Lite 모드에서 진공 작업을 실행합니다. 테이블 디렉터리에서 모든 파일을 찾는 대신VACUUM
델타 트랜잭션 로그를 사용하여 보존 기간 내에 테이블 버전에서 더 이상 참조하지 않는 파일을 식별하고 제거합니다. 델타 로그가 정리되어VACUUM LITE
를 완료할 수 없는 경우에는, DELTA_CANNOT_VACUUM_LITE 예외가 발생합니다.기본값은
FULL
.
델타가 아닌 테이블 진공
델타가 아닌 테이블과 연결된 디렉터리를 재귀적으로 진공 처리하고 보존 임계값보다 오래된 커밋되지 않은 파일을 제거합니다. 기본 임계값은 7일입니다.
델타가 아닌 테이블에서 Azure Databricks는 데이터가 기록되면 작업을 자동으로 트리거 VACUUM
합니다.
구문
VACUUM table_name [RETAIN num HOURS]
매개 변수
-
이름 또는 경로별로 기존 테이블을 식별합니다.
RETAIN num HOURS
보존 임계값입니다.