쿼리 성능 Insight

쿼리가 실행되면 Azure Databricks는 성능 개선 기회를 표시하고 이미 적용한 최적화를 보고하는 쿼리 성능 인사이트를 반환합니다. 각 인사이트에는 작은 파일을 압축하거나, 통계 데이터를 수집하거나, 창고 크기 조정 등 실행할 수 있는 권고사항이 포함되어 있습니다.

쿼리에 대한 인사이트 및 권장 사항 찾기

인사이트는 쿼리 기록쿼리 프로필에 표시됩니다. 쿼리 세부 정보 패널에는 총 작업 기간에 대한 예상 효과에 따라 순위가 지정된 인사이트 요약이 표시됩니다. 쿼리 프로필의 성능 인사이트 탭에는 각 인사이트에 대한 전체 세부 정보가 표시됩니다.

Genie Code를 사용하여 최적화

쿼리에 실행 가능한 인사이트가 있는 경우 최적화 를 선택하여 지니 코드를 엽니다. 쿼리 변경이 필요한 인사이트를 위해 Genie Code는 쿼리를 다시 작성하고 승인에 대한 변경 내용을 표시합니다. 테이블 또는 컴퓨팅 변경 내용이 포함된 인사이트를 위해 Genie Code는 권장되는 작업을 일반 언어 텍스트로 요약합니다.

Genie Code 작업에 대한 자세한 내용은 Genie Code를 참조하세요.

쿼리 최적화 인사이트

COVERAGE_FILTER_KEYS_CLUSTERING

테이블은 테이블 검색 중에 필터에 사용되지 않는 하나 이상의 키로 클러스터 됩니다.

추천: 클러스터링 키에 필터를 추가하여 읽은 바이트를 줄입니다.

COVERAGE_FILTER_KEYS_PARTITIONING

테이블은 테이블 검색 중에 필터에 사용되지 않는 하나 이상의 키로 분할 됩니다.

추천: 분할 키에 필터를 추가하여 읽은 바이트를 줄입니다.

COVERAGE_PHOTON

Photon은 이 작업을 가속화할 수 없으므로 쿼리는 표준 런타임 엔진을 사용합니다.

추천:Photon 제한 사항을 검토하고 지원되는 실행 경로를 사용하도록 쿼리를 조정합니다.

EXPLODING_JOIN

인은 읽기보다 훨씬 더 많은 행을 생성합니다.

추천: 필요한 결과 하위 집합을 결정한 다음 조인 조건을 업데이트하거나 두 관계에서 입력 행 수를 줄입니다.

FLOW_FULL_RECOMPUTE

흐름전체 다시 계산으로 실행됩니다.

추천:증분 지원을 위해 쿼리를 다시 작성하여 읽은 바이트를 줄입니다.

REDUNDANT_AGGREGATION

집계 작업이 쿼리 결과를 변경하지 않았습니다.

추천: 집계를 제거하거나 기본 및 외래 키 제약 조건을 적용합니다.

REDUNDANT_JOIN

외부 조인은 바깥쪽 면의 행 수를 변경하지 않았으며, 조인 테이블의 열은 사용되지 않습니다.

추천: 조인을 제거하거나 기본 키 또는 고유 제약 조건을 적용하세요.

SELECTIVE_JOIN

인은 읽기보다 훨씬 적은 행을 생성합니다.

추천: 필요한 결과 하위 집합을 확인한 다음 조인 앞에 필터를 추가하여 입력 행을 줄입니다.

WIDE_PROJECTION

쿼리는 테이블의 모든 열을 투영 합니다.

권장 사항: 읽은 바이트를 줄이는 데 필요한 열만 Project.

데이터 레이아웃 인사이트

동시 쓰기

테이블에 동시 쓰기를 수행하면 자동으로 해결되거나 실패하는 충돌이 발생합니다.

추천:델타 기록을 검토하여 동시 쓰기를 식별하고 충돌을 방지하도록 예약을 조정합니다.

COVERAGE_STATS_DELTA

델타 데이터 건너뛰기 통계가 테이블 스캔 파일 필터에 대해 누락되었거나 불완전하므로, 쿼리는 파일 내 필터링을 사용합니다.

각 필터의 통계 상태는 다음 중 하나일 수 있습니다.

  • 전체: 통계는 모든 필터에 사용할 수 있습니다.
  • 부분: 통계는 필터의 하위 집합에 사용할 수 있습니다.
  • 사용할: 필터에는 통계를 사용할 수 없습니다.
  • 하지 않는: 필터가 데이터 형식을 변환하므로 통계를 사용할 수 없습니다.

권장 사항:델타 통계를 수집하여 읽은 바이트를 줄입니다.

COVERAGE_STATS_OPTIMIZER

비용 기반 최적화 프로그램 통계가 누락되었거나 불완전하므로 쿼리 계획은 표준 추론을 사용합니다.

권장 사항:최적화 프로그램이 더 나은 계획을 생성할 수 있도록 통계를 수집합니다.

DATA_FILE_SIZE

테이블 스캔은 많은 작은 파일을 읽어 스캔 시간이 늘어납니다.

Recommendations:

  • 테이블에서 파일 크기를 자동으로 최적화하는 예측 최적화 를 활성화하세요.
  • 작은 파일로 압축해 보세요 OPTIMIZE .
  • 파티션된 테이블에는 리퀴드 클러스터링으로 전환하세요. 예측 최적화는 작은 파일을 파티션 간에 압축할 수 없기 때문입니다.

DATA_SKEW (데이터 불균형)

데이터는 컴퓨팅 리소스에 고르지 않게 분산됩니다.

추천: 데이터 배포를 검토한 다음 키 솔트 또는 사전 집계를 사용하여 워크로드의 균형을 조정합니다.

MANUAL_DATA_LAYOUT

이 테이블은 수동으로 최적화되어 있으며, 자동 액체 클러스터링의 이점을 누릴 수 있습니다.

Recommendations:

  • 성능을 향상시키고 자동 유지 관리를 위해 테이블을 외부에서 관리되는 테이블로 변환합니다.
  • 자동 유지 관리 작업을 위해 테이블에서 예측 최적화 를 사용하도록 설정합니다.
  • 테이블에서 자동 클러스터링을 사용하도록 설정하여 읽은 바이트를 줄입니다.

컴퓨팅 및 리소스 인사이트

DATA_SPILL

데이터가 메모리에 맞지 않아 쿼리 실행 중에 데이터가 디스크로 유출되었습니다.

추천: 웨어하우스 크기를 늘려 메모리를 추가합니다. 행, 열 또는 큰 열의 크기(문자열, 배열, 맵, 구조체)를 줄여 메모리 사용량을 줄입니다.

EXCESSIVE_QUEUE_TIME

쿼리가 웨어 하우스 큐에서 대기했습니다.

추천: 웨어하우스 의 최대 클러스터 수를 늘려 큐 시간을 줄입니다.

IO_THROTTLING (입출력 제한)

클라우드 공급자가 클라우드 스토리지 요청을 제한했습니다.

권장 사항: 클라우드 공급자에게 증가된 스토리지 요청 제한을 요청하려면 관리자에게 문의하세요.

가속

이 인사이트들은 Azure Databricks가 쿼리 실행 중에 이미 적용한 최적화를 설명합니다. 성능 인사이트 탭에 가속 라벨과 함께 나타나며 별도의 조치가 필요하지 않습니다.

AUTO_LIQUID_CLUSTERING

이 쿼리는 테이블이 자동 액체 클러스터링(Automatic Liquid Clustering)을 사용하기 때문에 읽는 데이터가 적습니다. Azure Databricks는 워크로드에서 학습한 키별로 테이블을 지속적으로 클러스터링하므로, 필터와 맞지 않는 파일은 스캔 시 건너뛸 수 있습니다. 튜닝이나 수동 분할이 필요하지 않습니다.

HISTORY_BASED_JOIN_STRATEGY

Azure Databricks는 이전 유사 쿼리 실행 측정값을 사용해 이 쿼리의 결합을 최적화했습니다. 워크로드 이력에 따라 클러스터 내에서 데이터를 셔플하는 대신 브로드캐스트 조인을 선택했습니다. 쿼리 변경은 필요하지 않습니다.

SHORT_QUERY_PRIORITIZATION

클러스터가 용량에 도달했음에도 불구하고, Azure Databricks는 이 쿼리가 단기 실행될 것으로 예측해 더 큰 쿼리 뒤에 대기열에 두지 않고 즉시 빠른 경로로 처리했습니다. 이렇게 하면 부하가 걸릴 때도 인터랙티브 워크로드가 반응할 수 있습니다.

추가 리소스

성능 모범 사례에 대한 광범위한 개요는 Databricks, Spark 및 Delta Lake 워크로드 최적화에 대한 포괄적인 가이드를 참조하세요.