10배 스토리지 안티패턴
GROUP BY가 줄이는 행보다 더 많은 행을 만든다면, 그것은 materialized view가 아니라 비용이 많이 드는 인덱스를 만드는 것입니다.
운영 환경의 materialized view 상태 검증
- 낮은 집계 비율 (<10%) = 양호한 MV, 상당한 압축 효과
- 높은 집계 비율 (>70%) = 좋지 않은 MV, 스토리지 폭증 위험
- 스토리지 배수 = MV 크기가 얼마나 더 커지거나 작아지는지
materialized view가 문제가 될 때
- 삽입 지연 시간이 증가합니다(기존에 10ms가 걸리던 쿼리가 이제 100ms 이상 걸립니다)
- “Too many parts” 오류가 더 자주 발생합니다
- 삽입 작업 중 CPU 사용량이 급증합니다
- 이전에는 발생하지 않던 삽입 timeout이 발생합니다
system.query_log를 사용해 쿼리 실행 시간 추세를 추적함으로써 비교할 수 있습니다.
영상 출처
- ClickHouse at CommonRoom - Kirill Sapchuk - “materialized views에 과도하게 열광한다” 및 “20GB→190GB 폭증” 사례 연구의 출처