OPTIMIZE
적용 대상: Databricks SQL Databricks 런타임
Delta Lake 데이터의 레이아웃을 최적화합니다. 필요에 따라 데이터의 하위 집합을 최적화하거나 열별로 데이터를 정렬합니다. 배치를 지정하지 않고 테이블이 액체 클러스터링으로 정의되지 않은 경우 빈 압축 최적화가 수행됩니다.
Syntax
OPTIMIZE table_name [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
참고 항목
- bin 압축 최적화는 idempotent입니다. 즉, 동일한 데이터 세트에서 두 번 실행되는 경우 두 번째 실행은 영향을 주지 않습니다. 디스크의 데이터 크기와 관련하여 균등하게 균형 잡힌 데이터 파일을 생성하는 것을 목표로 하지만 파일당 튜플 수는 고려되지 않을 수 있습니다. 그러나 두 측정값에는 상관 관계가 있는 경우가 많습니다.
- Z 순서 지정은 idempotent 가 아니지만 증분 작업이 되는 것을 목표로 합니다. 여러 번 실행할 때 Z-순서 지정에 걸리는 시간이 감소한다는 보장은 없습니다. 그러나 Z-순서가 지정된 파티션에 새 데이터가 추가되지 않은 경우 해당 파티션의 다른 Z-순서 지정은 아무 효과도 없습니다. 튜플 수와 관련하여 균등하게 균형 잡힌 데이터 파일을 생성하는 것을 목표로 하지만 디스크의 데이터 크기는 고려되지 않을 수 있습니다. 두 측정값에는 상관 관계가 있는 경우가 많지만 상관 관계가 없어서 최적화 작업 시간이 기울어지는 상황도 발생할 수 있습니다.
참고 항목
Databricks 런타임을 사용하는 동안 출력 파일 크기를 제어하려면 Spark 구성spark.databricks.delta.optimize.maxFileSize
을 설정합니다. 기본값은 1073741824
이며 크기를 1GB로 설정합니다. 104857600
값을 지정하면 파일 크기가 100MB로 설정됩니다.
매개 변수
-
기존 델타 테이블을 식별합니다. 이름에는 임시 사양이 포함되지 않아야 합니다.
WHERE
지정된 파티션 조건자와 일치하는 행 하위 집합을 최적화합니다. 파티션 키 특성과 관련된 필터만 지원됩니다.
액체 클러스터링을 사용하는 테이블에서는 이 절을 사용할 수 없습니다.
ZORDER BY
동일한 파일 집합에 열 정보를 배치합니다. 공동 지역성은 Delta Lake 데이터 건너뛰기 알고리즘에서 읽어야 하는 데이터 양을 훨씬 줄이기 위해 사용됩니다.
ZORDER BY
에 대해 여러 열을 쉼표로 구분된 목록으로 지정할 수 있습니다. 그러나 로컬의 효과는 각 추가 열에 따라 감소합니다.액체 클러스터링을 사용하는 테이블에서는 이 절을 사용할 수 없습니다.
예제
> OPTIMIZE events;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
명령에 대한 OPTIMIZE
자세한 내용은 데이터 파일 레이아웃 최적화를 참조 하세요.