컬럼 독립 저장 방식이기 때문에 가능한 최적화이며, row-based DB에선 불가능한 접근 150M rows, 70GB 비압축, 30GB 압축 Top N 쿼리 예시: 대용량 텍스트 컬럼 조회 예시: 총 1,200배 이상 성능 향상, 150배 이상 메모리 사용 감소 필터 없는 전체 정렬 쿼리에서: lazy materialization 전: 219초 lazy materialization 후: 0.139초 1,576배 속도 향상, 40배 I/O 감소, 300배 메모리 사용 감소 같은 SQL, 같은 머신, 다른 결과
ClickHouse의 지연된 최적화 전략: Lazy Materialization
핵심 개념
기존 I/O 최적화 기술
Lazy Materialization의 원리
실제 예시: Amazon 리뷰 데이터셋
최적화 계층 적용별 성능 비교
1. 최적화 없음 (Baseline)
2. Primary Key Index 적용
3. PREWHERE 추가
4. Lazy Materialization 활성화
필터 없는 Top N 쿼리에도 유효
실행 계획 확인
EXPLAIN actions = 1
SELECT helpful_votes, product_title, review_headline, review_body
FROM amazon.amazon_reviews
ORDER BY helpful_votes DESC
LIMIT 3
SETTINGS query_plan_optimize_lazy_materialization = true;
Lazily read columns: review_headline, review_body, product_title
Limit
Sorting
ReadFromMergeTree
결론
빠름 = 덜 읽음 = ClickHouse