Delta Lake에 대한 데이터 건너뛰기

데이터 건너뛰기 정보는 델타 테이블에 데이터를 쓸 때 자동으로 수집됩니다. Azure Databricks의 Delta Lake는 쿼리 시간에 이 정보(최소값 및 최대값, null 개수 및 파일당 총 레코드)를 활용하여 더 빠른 쿼리를 제공합니다.

참고 항목

Databricks Runtime 13.3 이상에서 Databricks는 델타 테이블 레이아웃에 클러스터링 사용하는 것이 좋습니다. 클러스터링이 Z 순서 지정과 호환되지 않습니다. Delta 테이블에 Liquid 클러스터링 사용을 참조하세요.

문에 사용되는 ZORDER 열에 대해 수집된 통계가 있어야 합니다. Z 순서 지정이란?을 참조하세요.

델타 통계 열 지정

기본적으로 Delta Lake는 테이블 스키마에 정의된 처음 32개 열에 대한 통계를 수집합니다. 이 컬렉션의 경우 중첩 열의 각 필드는 개별 열로 간주됩니다. 다음 테이블 속성 중 하나를 설정하여 이 동작을 수정할 수 있습니다.

테이블 속성 Databricks 런타임 지원 설명
delta.dataSkippingNumIndexedCols 지원되는 모든 Databricks 런타임 버전 델타에서 통계를 수집하는 열 수를 늘리거나 줄입니다. 열 순서에 따라 달라집니다.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS 이상 Delta Lake에서 통계를 수집하는 열 이름 목록을 지정합니다. 대체합니다 dataSkippingNumIndexedCols.

테이블 속성은 테이블을 만들 때 또는 문을 사용하여 ALTER TABLE 설정할 수 있습니다. Delta 테이블 속성 참조를 참조하세요.

이 속성을 업데이트해도 기존 데이터에 대한 통계가 자동으로 다시 계산되지는 않습니다. 대신 테이블에서 데이터를 추가하거나 업데이트할 때 향후 통계 수집의 동작에 영향을 줍니다. Delta Lake는 현재 통계 열 목록에 포함되지 않은 열에 대한 통계를 활용하지 않습니다.

Databricks Runtime 14.3 LTS 이상에서는 다음 명령을 사용하여 Delta 테이블에 대한 통계 다시 계산을 수동으로 트리거할 수 있습니다.

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

참고 항목

긴 문자열은 통계 수집 중에 잘립니다. 특히 열이 쿼리 필터링에 자주 사용되지 않는 경우 통계 컬렉션에서 긴 문자열 열을 제외하도록 선택할 수 있습니다.

Z 순서 지정이란?

Z 순서 지정은 동일한 파일 세트에서 관련 정보를 공동 배치하는 기술입니다. 이 공동 배치는 Azure Databricks 데이터 건너뛰기 알고리즘의 Delta Lake에서 자동으로 사용됩니다. 이 동작은 Azure Databricks의 Delta Lake에서 읽어야 하는 데이터의 양을 크게 줄입니다. Z 순서 데이터에 대해 ZORDER BY 절에서 정렬할 열을 지정합니다.

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

열이 쿼리 조건자에서 일반적으로 사용되고 해당 열의 카디널리티가 높은 경우(즉, 많은 수의 고유 값) ZORDER BY를 사용합니다.

ZORDER BY에 대해 여러 열을 쉼표로 구분된 목록으로 지정할 수 있습니다. 그러나 추가 열이 있을 때마다 지역성 효과는 감소합니다. 통계가 수집되지 않는 열에 대한 Z 순서 지정은 효과적이지 못하며 리소스가 소모됩니다. 데이터 건너뛰기에는 min, max 및 count와 같은 열 로컬 통계가 필요하기 때문입니다. 스키마의 열을 다시 정렬하여 특정 열에 대한 통계 수집을 구성하거나 통계를 수집할 열의 수를 늘릴 수 있습니다.

참고 항목

  • Z 순서 지정은 idempotent 가 아니지만 증분 작업이 되는 것을 목표로 합니다. 여러 번 실행할 때 Z-순서 지정에 걸리는 시간이 감소한다는 보장은 없습니다. 그러나 Z-순서가 지정된 파티션에 새 데이터가 추가되지 않은 경우 해당 파티션의 다른 Z-순서 지정은 아무 효과도 없습니다.

  • Z 순서 지정은 튜플 수와 관련하여 균등하게 균형 잡힌 데이터 파일을 생성하는 것을 목표로 하지만 반드시 디스크의 데이터 크기는 아닙니다. 두 측정값에는 상관 관계가 있는 경우가 많지만 상관 관계가 없어서 최적화 작업 시간이 기울어지는 상황도 발생할 수 있습니다.

    예를 들어 ZORDER BY날짜 및 가장 최근 레코드가 모두 이전의 레코드보다 훨씬 더 넓은 경우(예: 더 긴 배열 또는 문자열 값) OPTIMIZE 작업의 태스크 기간과 결과 파일 크기가 왜곡됩니다. 그러나 이는 OPTIMIZE 명령 자체에 대한 문제일 뿐이며, 후속 쿼리에 부정적인 영향을 주지 않아야 합니다.