10 倍存储反模式
GROUP BY 生成的行数比它消除的还多,那你构建的就是一个代价高昂的索引,而不是 materialized view。
生产环境 materialized view 健康度验证
- 低聚合率 (<10%) = 好的 MV,可显著压缩数据
- 高聚合率 (>70%) = 差的 MV,存在存储膨胀风险
- 存储倍数 = 你的 MV 最终会变大或变小多少
当 materialized views 开始成为问题时
- 插入延迟升高 (原本耗时 10ms 的查询现在需要 100ms 以上)
- “parts 过多”错误出现得越来越频繁
- 插入操作期间 CPU 使用率飙升
- 此前未出现过的插入超时
system.query_log 跟踪查询耗时趋势,对比添加 MV 前后的插入性能。
视频来源
- ClickHouse at CommonRoom - Kirill Sapchuk - “过度热衷于 materialized views”和“20GB→190GB 爆炸式增长”案例的来源