다음을 통해 공유


VACUUM

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

테이블 디렉터리에서 사용하지 않는 파일을 제거합니다.

참고 항목

이 명령은 델타 또는 Apache Spark 테이블에서 작업하는지 여부에 따라 다르게 작동합니다.

델타 테이블을 청소기로 청소하기

Delta 테이블과 연결된 재귀 진공 디렉터리입니다. 자세한 내용 및 제한 사항은 진공사용하여 사용하지 않는 데이터 파일 제거를 참조하세요.

VACUUM 델타에서 관리되지 않는 테이블 디렉터리에서 모든 파일과 테이블에 대한 트랜잭션 로그의 최신 상태가 아니고 보존 임계값보다 오래된 데이터 파일을 모두 제거합니다. VACUUM은 밑줄(_)로 시작되는 모든 디렉터리를 건너뜁니다. 여기에는 _delta_log가 포함됩니다. 밑줄로 시작하는 열에서 테이블을 분할하는 것은 이 규칙의 예외입니다. VACUUM 대상 델타 테이블에 포함된 모든 유효한 파티션을 검사합니다. 델타 테이블 데이터 파일은 스토리지 시스템의 수정 타임스탬프가 아니라 델타의 트랜잭션 로그 및 보존 시간에서 논리적으로 제거된 시간에 따라 삭제됩니다. 기본 임계값은 7일입니다.

델타 테이블에서 Azure Databricks 않습니다.

Delta 테이블에서 VACUUM을 실행하면 지정된 데이터 보존 기간보다 오래된 버전으로 시간 이동 기능을 사용할 수 없게 됩니다.

Warning

이전 스냅샷 및 커밋되지 않은 파일은 테이블에 대한 동시 판독기 또는 기록기에서 계속 사용할 수 있으므로 보존 간격을 7일 이상으로 설정하는 것이 좋습니다. VACUUM가 활성 파일을 정리하는 경우, 동시에 실행되는 판독기가 실패하거나, 더 심각하게는, VACUUM이 아직 커밋되지 않은 파일을 삭제할 때 테이블이 손상될 수 있습니다. 가장 긴 실행 동시 트랜잭션보다 긴 간격과 모든 스트림이 테이블에 대한 최신 업데이트보다 지연될 수 있는 가장 긴 기간을 선택해야 합니다.

Delta Lake에는 위험한 VACUUM 명령을 실행할 수 없도록 해 주는 안전 검사가 있습니다. Databricks Runtime에서는 지정하려는 보존 간격보다 오래 걸리는 이 테이블에서 수행되는 작업이 없는 것이 확실합니다. Spark 구성 속성 spark.databricks.delta.retentionDurationCheck.enabledfalse설정하여 이 안전 검사를 해제할 수 있습니다.

VACUUM table_name { { FULL | LITE } |  RETAIN num HOURS | DRY RUN } [...]

Databricks Runtime 16.0 및 이전에서는 구문에 RETAIN num HOURSDRY RUN보다 앞서 와야 합니다.

Important

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

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

매개 변수

  • table_name

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

  • RETAIN num HOURS

    보존 임계값입니다.

  • DRY RUN

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

  • FULL 또는 LITE

    적용 대상:예로 체크됨 Databricks SQL 예로 체크됨 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]

매개 변수

  • table_name

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

  • RETAIN num HOURS

    보존 임계값입니다.