对于湖仓分析系统而言,并不存在放之四海皆准的最佳存储布局。一项针对Delta Lake上四种工作负载类型的受控基准测试显示,Liquid Clustering在点查询、时间范围聚合和大型聚合方面均实现最低延迟,对于查询模式多样或不断演变的团队,应作为默认存储布局。ZOrdering仅在稳定、高选择性的多谓词工作负载中表现更好,且前提是过滤列与聚类键完全匹配。
测试揭示了两项与通常描述相悖的发现。其一,当日期列在ZOrder聚簇表达式中作为二级或三级键时,时间范围查询比简单的按日期分区表慢78%,连续的日期值分散在多个文件中,破坏了分区天然提供的范围扫描效率。其二,当查询谓词能与一组稳定的过滤列精确匹配时,ZOrder的文件剪枝效果接近最优,而Liquid Clustering在扫描多出十倍数据时,运行速度可能变成五分之一。
分区、ZOrdering和Liquid Clustering在磁盘数据组织上采用截然不同的方法。分区仍是最轻量、最可预测的范围剪枝方案;Liquid Clustering自动维护局部有序性,无需人工调优,以牺牲确定性剪枝换取工作负载灵活性;ZOrdering则在过滤列严格匹配聚类键且高选择性时占优。这些权衡通常仅从概念上被描述,缺乏实际测量验证。
本次基准测试使用真实的Databricks查询配置文件,在包含5000万条记录的数据集上比较三种布局策略,问题直接源于作者在TCS英国分公司和IBM设计Delta Lake平台时遇到的生产挑战。作者建议,在确定布局策略前,应针对自身数据的代表性样本,将最常用的三种查询模式分别应用于三种配置进行实测。
作者还给出一个诊断性问题:热门查询是否总是根据相同的两到三个列进行筛选?如果答案是肯定的,应仅对这些列使用ZOrder,并确保选择性最高的列排在首位;如果答案是否定的,或查询模式可能变化,则应采用Liquid Clustering。
扫码查看视频号
咨询
咨询