线上出现 TOO_MANY_PARTS 异常,初步排查未发现调用量激增或 ClickHouse 负载过高。深入分析发现,因 本地表未进行分区 ,所有数据存储在同一大分区内,导致大量小分片生成,影响合并效率。

关键原因

  1. 未定义 PARTITION BY ,导致所有数据集中在单个分区。
  2. 单笔插入 ,每条数据都会生成一个小分片,加剧分片数量问题。

解决方案

  • 显式定义分区键 (如按时间分区)优化数据存储。
  • 改为批量插入 ,减少小分片数量,提高合并效率。
  • 优化分片键和索引 ,提升整体查询和存储性能。