피드로 돌아가기
FINAL in ClickHouse Isn’t as Expensive as It Used to Be
Dev.toDev.to
Database

ClickHouse FINAL 최적화를 통한 최신 상태 쿼리 비용 감소

FINAL in ClickHouse Isn’t as Expensive as It Used to Be

Mohamed Hussain S2026년 5월 14일5intermediate

Context

ReplacingMergeTree 등 ClickHouse 엔진의 비동기 Merge 특성으로 인한 중복 데이터 노출 문제 발생. 기존에는 쿼리 시점에 Merge 로직을 강제하는 FINAL 연산의 과도한 CPU/Memory 소모로 인해 사용을 지양하는 설계 패턴이 지배적이었음.

Technical Solution

  • Parallel Execution 도입을 통한 쿼리 처리 속도 향상 및 리소스 효율 극대화
  • Partition-aware Optimization 적용으로 불필요한 데이터 스캔 범위 축소
  • Memory Behavior 개선을 통한 대규모 데이터셋 처리 시의 메모리 오버헤드 감소
  • Smart Merge Execution 설계를 통한 런타임 중복 제거 작업의 효율성 제고
  • Query-time Merge 로직과 Storage-level OPTIMIZE 작업의 명확한 분리로 부하 제어
  • 최신 버전의 최적화된 FINAL 구현을 통한 argMax 기반 수동 중복 제거 대체 가능성 확보

- 최신 ClickHouse 버전 사용 시 latest-state 쿼리에 FINAL 도입 검토 - 대규모 데이터셋 스캔 및 다수 파티션 쿼리 시 FINAL 오버헤드 사전 측정 - SELECT FINAL과 OPTIMIZE TABLE FINAL의 동작 차이를 구분하여 적용 - 중복 데이터 발생 원인을 분석하여 파티셔닝 및 스키마 설계 최적화 우선 수행

원문 읽기