经验总结 - Too Many Parts 问题
本指南是从社区 meetup 中总结出的系列经验之一。若想了解更多源自真实场景的解决方案和见解,您可以按具体问题浏览。 还想获取更多性能优化技巧?请查看社区经验指南性能优化。
理解问题
ClickHouse 会抛出 “Too many parts” 错误,以避免出现严重的性能下降。过多的小 part 会引发多种问题:查询期间需要读取和合并更多文件,导致查询性能下降;内存使用增加,因为每个 part 都需要在内存中保存元数据;压缩效率降低,因为更小的数据块压缩效果更差;由于更多的文件句柄和寻道操作而带来更高的 I/O 开销;以及后台合并变慢,使合并调度器的工作量显著增加。
相关文档
及早识别问题
此查询通过分析所有活动表的分片数量和大小来监控表碎片情况。它会识别出分片数量过多或过小、可能需要合并优化的表。请定期使用此查询,在碎片问题影响查询性能之前将其发现。
视频资源
- Fast, Concurrent, and Consistent Asynchronous INSERTS in ClickHouse - 由 ClickHouse 团队成员讲解异步 INSERT 及 “too many parts” 问题
- Production ClickHouse at Scale - 来自可观测性平台的真实大规模生产环境批处理策略