Folia
← 返回头版

每一毫秒都至关重要:ClickHouse查询优化案例

一名ClickHouse数据库用户通过系列增量优化,成功将初始耗时85.715秒的查询性能提升超过200倍,最终查询时间缩短至约400毫秒。1该项目针对处理19.6亿行数据、占用198.69GB存储空间的高延迟查询进行了多方面改进。1

优化工作从分区策略调整开始,将原有的按月份分区改为按客户编号取模的方案(PARTITION BY (client_customer_id % 36))。1随后通过将event_type字段提升至ORDER BY子句的早期位置,实现了约15%的性能提升。1移除昂贵的连接操作后,查询时间从2.46秒进一步改善,获得了接近5倍的提升。1

通过添加预计算列的方式,该优化项目将内存使用降低了13倍,查询时间相应提升5倍。1此外,优化者发现约97%的行数据来自已过期的时间周期,通过将period_ends_at字段添加至ORDER BY,实现了行数和字节数的100倍减少。1在查询准备阶段,系统开销为420毫秒,占总耗时740毫秒的超过一半,这表明在整个查询生命周期中仍存在持续的优化空间。1


来源

  1. Hacker NewsEvery Millisecond Counts

评论