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

성능 및 튜닝

Apache Doris의 적응형 옵티마이저와 Pipeline 실행 엔진 덕분에 대부분의 워크로드는 별도 설정 없이도 원활하게 실행되지만, 운영 환경에서는 대개 체계적인 성능 튜닝이 필요합니다. 먼저 튜닝 방법론에 따라 병목 지점을 찾은 다음, 쿼리 또는 데이터 적재 측면에서 구체적인 시나리오에 맞춰 최적화하세요. 이해하기 어려운 실행 계획을 만나면 최적화 기술 원리를 참고하여 그 이면의 동작 방식을 파악하세요.

튜닝 방법론​

쿼리 성능​

스키마 및 인덱스 최적화

테이블 모델, 파티셔닝 및 버킷팅, 키 컬럼 설계, 인덱스 선택(prefix index, BloomFilter, NGram, inverted)을 통해 쿼리 성능의 상한을 결정합니다.

구체화된 뷰

동기식 또는 비동기식 구체화된 뷰로 결과를 미리 계산하고, 투명한 재작성을 통해 기존 SQL을 수정하지 않고도 실행 속도를 높입니다.

Join 최적화

Colocation Join으로 Shuffle을 제거하고, 옵티마이저의 판단이 최적이 아닐 때 Distribute 및 Leading Hint를 사용하여 Join 계획을 수동으로 조정합니다.

캐시 가속

SQL Cache, Condition Cache, 외부 테이블 파일 캐시를 함께 사용하여 반복되는 쿼리에서 결과, 필터 연산, 원격 데이터를 재사용합니다.

실행 튜닝

Profile에 나타난 런타임 병목을 바탕으로 병렬도, RuntimeFilter 대기 시간, 데이터 편향, CBO 규칙을 조정합니다.

높은 동시성 및 포인트 쿼리

row store와 short-circuit 실행을 사용하여 Unique Key 테이블에서 QPS가 높은 기본 키 쿼리를 지원하고, 차원 테이블 조인 대신 딕셔너리 테이블을 사용하여 KV 쿼리를 가속합니다.

고유 값 개수 집계

BITMAP을 사용하여 정확하게 중복을 제거하거나, 1%-2%의 오차가 허용되는 경우 HLL을 사용하여 근사 UV를 계산함으로써 메모리 및 스토리지 오버헤드를 크게 줄입니다.

쿼리 Profile

Profile을 통해 Scan, Exchange, Join, 집계 등의 연산자별 소요 시간 분포를 분석하여 쿼리에서 가장 느린 단계를 빠르게 찾아냅니다.

데이터 적재 성능​

최적화 기술 원리​

벤치마크​