본문으로 건너뛰기
최종 수정: 에

DML 실행 계획 튜닝: 데이터 적재 및 쿼리 성능 병목 지점 파악

튜닝 전 점검 사항​

DML 실행 계획 튜닝을 시작하기 전에 다음 사항을 확인하세요.

  • 데이터 적재 단계와 쿼리 단계에서 소요되는 시간을 명확히 구분할 수 있는지 확인합니다.
  • Profile / Query Plan을 검토하여 실행 시간이 가장 긴 연산자나 단계를 파악했는지 확인합니다.
  • 데이터 적재 개요를 읽고 사용 시나리오에 적합한 데이터 적재 방식을 이해했는지 확인합니다.

튜닝 대상 파악: 데이터 적재 병목과 쿼리 병목​

DML 문(예: INSERT INTO ... SELECT)의 성능 병목은 일반적으로 두 가지 원인에서 비롯됩니다. 먼저 어느 단계에서 병목이 발생하는지 파악한 후, 그에 맞게 튜닝해야 합니다.

병목 유형일반적인 증상튜닝 참고 자료
데이터 적재 단계 병목쓰기 처리량이 낮고 Sink 연산자에서 소요되는 시간이 김데이터 적재 개요를 참조하여 적절한 데이터 적재 방식과 모범 사례 선택
쿼리 단계 병목Scan, Join, 집계 등의 연산자에서 소요되는 시간이 김실행 계획 튜닝의 다른 섹션을 참조하여 진단 및 튜닝

데이터 적재 측 튜닝​

Doris는 다양한 데이터 소스에서 데이터를 적재할 수 있도록 지원합니다. Doris가 제공하는 데이터 적재 기능을 유연하게 활용하면 여러 소스의 데이터를 Doris로 효율적으로 가져와 분석할 수 있습니다.

  • 목표: 데이터 소스와 적시성 요구 사항에 맞는 데이터 적재 방식을 선택하여 전반적인 DML 성능을 개선합니다.
  • 참고 자료: 데이터 적재 개요.
  • 참고: 데이터 적재 방식에는 Stream Load, Broker Load, Routine Load, INSERT 등이 있습니다. 자세한 모범 사례는 위 링크를 참조하세요.

쿼리 측 튜닝​

쿼리 단계에서 병목이 발생한다면 실행 계획 튜닝의 다른 섹션을 따라 진단하고 최적화하세요. 예를 들어 테이블 스키마 최적화, 통계, 조인 순서, 연산자 재작성 등을 살펴볼 수 있습니다. 자세한 내용은 실행 계획 튜닝을 참조하세요.

자주 묻는 질문​

질문1: DML 문이 느릴 때 데이터 적재 단계와 쿼리 단계 중 어디에서 지연이 발생하는지 빠르게 구분하려면 어떻게 해야 하나요? Profile에서 각 연산자의 소요 시간을 확인하세요. Sink/Load 관련 연산자의 소요 시간이 길면 데이터 적재 측에 병목이 있습니다. Scan/Join/Agg 연산자의 소요 시간이 길면 쿼리 측에 병목이 있습니다.

질문2: INSERT INTO ... SELECT가 느릴 때 어느 부분을 먼저 살펴봐야 하나요? 먼저 SELECT 하위 쿼리가 느린지 확인하세요. SELECT만 단독으로 실행했을 때 빠르다면 병목은 대개 쓰기 측에 있습니다.

질문3: 모든 데이터 적재 방식을 같은 방법으로 튜닝해야 하나요? 아니요. 데이터 적재 방식(Stream Load, Broker Load, Routine Load, INSERT 등)에 따라 튜닝 방법이 다릅니다. 데이터 적재 개요를 참조하세요.