OPTIMIZE

적용 대상:check marked yes Databricks SQL check marked yes Databricks 런타임

Delta Lake 데이터의 레이아웃을 최적화합니다. 필요에 따라 데이터의 하위 집합을 최적화하거나 열별로 데이터를 정렬합니다. 배치를 지정하지 않고 테이블이 liquid 클러스터링 정의되지 않은 경우 bin 압축 최적화가 수행됩니다.

Syntax

OPTIMIZE table_name [WHERE predicate]
  [ZORDER BY (col_name1 [, ...] ) ]

참고 항목

  • bin 압축 최적화는 idempotent입니다. 즉, 동일한 데이터 세트에서 두 번 실행되는 경우 두 번째 실행은 영향을 주지 않습니다. 디스크의 데이터 크기와 관련하여 균등하게 균형 잡힌 데이터 파일을 생성하는 것을 목표로 하지만 파일당 튜플 수는 고려되지 않을 수 있습니다. 그러나 두 측정값에는 상관 관계가 있는 경우가 많습니다.
  • Z 순서 지정은 idempotent 가 아니지만 증분 작업이 되는 것을 목표로 합니다. 여러 번 실행할 때 Z-순서 지정에 걸리는 시간이 감소한다는 보장은 없습니다. 그러나 Z-순서가 지정된 파티션에 새 데이터가 추가되지 않은 경우 해당 파티션의 다른 Z-순서 지정은 아무 효과도 없습니다. 튜플 수와 관련하여 균등하게 균형 잡힌 데이터 파일을 생성하는 것을 목표로 하지만 디스크의 데이터 크기는 고려되지 않을 수 있습니다. 두 측정값에는 상관 관계가 있는 경우가 많지만 상관 관계가 없어서 최적화 작업 시간이 기울어지는 상황도 발생할 수 있습니다.

참고 항목

Databricks Runtime을 사용하는 동안 출력 파일 크기를 제어하려면 Spark 구성spark.databricks.delta.optimize.maxFileSize을 설정합니다. 기본값은 1073741824이며 크기를 1GB로 설정합니다. 104857600 값을 지정하면 파일 크기가 100MB로 설정됩니다.

매개 변수

  • table_name

    기존 델타 테이블을 식별합니다. 이름에는 임시 사양이 포함되지 않아야 합니다.

  • WHERE

    지정된 파티션 조건자와 일치하는 행 하위 집합을 최적화합니다. 파티션 키 특성과 관련된 필터만 지원됩니다.

    liquid 클러스터링 사용하는 테이블에서는 이 절을 사용할 수 없습니다.

  • ZORDER BY

    동일한 파일 집합에 열 정보를 배치합니다. 공동 지역성은 Delta Lake 데이터 건너뛰기 알고리즘에서 읽어야 하는 데이터 양을 훨씬 줄이기 위해 사용됩니다. ZORDER BY에 대해 여러 열을 쉼표로 구분된 목록으로 지정할 수 있습니다. 그러나 로컬의 효과는 각 추가 열에 따라 감소합니다.

    liquid 클러스터링 사용하는 테이블에서는 이 절을 사용할 수 없습니다.

예제

> OPTIMIZE events;

> OPTIMIZE events WHERE date >= '2017-01-01';

> OPTIMIZE events
    WHERE date >= current_timestamp() - INTERVAL 1 day
    ZORDER BY (eventType);

OPTIMIZE 명령에 대한 자세한 내용은 Delta Lake에서 최적화를 사용하여 데이터 파일 압축을 참조하세요.