线上出现 TOO_MANY_PARTS
异常,初步排查未发现调用量激增或 ClickHouse 负载过高。深入分析发现,因 本地表未进行分区 ,所有数据存储在同一大分区内,导致大量小分片生成,影响合并效率。
关键原因
- 未定义
PARTITION BY
,导致所有数据集中在单个分区。 - 单笔插入 ,每条数据都会生成一个小分片,加剧分片数量问题。
解决方案
- 显式定义分区键 (如按时间分区)优化数据存储。
- 改为批量插入 ,减少小分片数量,提高合并效率。
- 优化分片键和索引 ,提升整体查询和存储性能。