다음을 통해 공유


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.enabledfalse로 설정하여 이 안전 검사를 해제할 수 있습니다.

VACUUM table_name [RETAIN num HOURS] [DRY RUN]

Important

VACUUM 명령에 대한 보존 기간은 테이블 속성에 delta.deletedFileRetentionDuration 의해 결정되며 기본값은 7일입니다. 즉 VACUUM , 지난 7일 동안 델타 테이블 버전에서 더 이상 참조하지 않는 데이터 파일을 제거합니다. 데이터를 더 오래 보존하려는 경우(예: 더 긴 기간 동안의 시간 이동 지원) 이 테이블 속성을 더 높은 값으로 설정해야 합니다. 다음 예제에서는 이 임계값을 30일로 설정하는 방법을 보여줍니다.

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

매개 변수

  • table_name

    기존 델타 테이블을 식별합니다. 이름에는 임시 사양 또는 옵션 사양이 포함되어서는 안됩니다.

  • RETAIN num HOURS

    보존 임계값입니다.

  • DRY RUN

    삭제할 최대 1000개의 파일 목록을 반환합니다.

델타가 아닌 테이블 진공

델타가 아닌 테이블과 연결된 디렉터리를 재귀적으로 진공 처리하고 보존 임계값보다 오래된 커밋되지 않은 파일을 제거합니다. 기본 임계값은 7일입니다.

델타가 아닌 테이블에서 Azure Databricks는 데이터가 기록되면 작업을 자동으로 트리거 VACUUM 합니다.

구문

VACUUM table_name [RETAIN num HOURS]

매개 변수

  • table_name

    이름 또는 경로별로 기존 테이블을 식별합니다.

  • RETAIN num HOURS

    보존 임계값입니다.