Hasty Briefsbeta

双语

Every Millisecond Counts

21 days ago
  • 该项目旨在改善ClickHouse查询性能,针对最昂贵的查询,原本耗时85秒。
  • 使用带有FINAL的ReplacingMergeTree是必要的,因为存在可变事件,但导致了性能瓶颈。
  • 将分区键从月份改为(client_customer_id % 36)提高了并行性和插入性能,尽管失去了分区裁剪。
  • 在排序键中提升event_type减少了约7%的读取行数,并将查询延迟提高了约15%。
  • 通过在应用层预计算中间值来移除昂贵的JOIN,将内存减少了13倍,查询时间提高了5倍。
  • 在应用层预计算指标贡献,将读取的列数从9列减少到1列,每次查询节省约1.5GB,延迟提高约2倍。
  • 用扁平查询模板替换嵌套参数化视图,消除了解析开销,将某个指标的平均查询时间从735ms降至233ms。
  • 激进的合并(提高合并限制并设置min_age_to_force_merge_seconds)将表大小从2.12 TiB减少到1.55 TiB,并将最大客户查询时间从14秒降至5.5秒。
  • 在ORDER BY中添加toDate(period_ends_at)允许粒度过滤,将大客户的处理行数减少100倍,查询时间降至约400ms,较原始版本提高了200倍。
  • 这些优化是渐进且叠加的,没有单一的巧妙技巧,而是基本改进的共同作用。