Delta Lake布局基准:Liquid Clustering多数场景更快
一项针对Delta Lake存储布局的受控基准测试表明,分区、ZOrdering与Liquid Clustering各有适用场景。Liquid Clustering在点查询、时间范围聚合等多种工作负载中取得最低延迟,适合查询模式多变或持续演进的团队;ZOrdering只有在过滤列稳定、选择性高且与聚类键完全匹配时更具优势,按日期分区则仍是最轻量、最可预测的范围剪枝方案。
测试使用5000万条模拟零售交易数据,字段包括customer_id、txn_date、region、amount和product_cat,日期覆盖2019年至2023年,并加入客户访问偏度、区域倾斜及高价值订单等特征,以接近生产遥测中的热分区和80/20查询分布。测试分别建立按txn_date分区的表、按(customer_id、region、txn_date)执行ZOrder的表,以及采用相同聚类列的Liquid Clustered表;查询配置和完整语句均已在GitHub提供。
点查询中,Liquid Clustering中位延迟为1.003秒,比分区基线的1.972秒快49%,但读取784.86 MB,高于ZOrder的369.09 MB。其优势来自希尔伯特曲线带来的文件内局部性,相关customer_id更集中,减少了文件访问和磁盘寻道开销。时间范围聚合中,Liquid Clustering为659毫秒,分区为1.038秒,而日期位于ZOrder三级键时,ZOrder耗时1.845秒,读取306.80 MB,反而比分区慢78%;连续日期被分散到多个文件,削弱了范围扫描效率。
多列选择性过滤则呈现相反结果:ZOrder仅耗时615毫秒,读取59.03 MB;分区耗时622毫秒、读取128.09 MB;Liquid Clustering耗时2.967秒、读取639.95 MB,速度接近慢五倍,扫描量约为ZOrder的十倍。当谓词精确对应固定聚类键时,ZOrder能实现近似最优的文件剪枝,而Liquid Clustering为适应更多查询模式牺牲了部分剪枝确定性。
测试还设置了按region进行SUM的全表大规模聚合场景,取消过滤条件以观察完整扫描表现;现有材料未给出该工作负载的具体测量表。综合建议是先用自身数据和最常见的三类查询,对分区、ZOrder和Liquid Clustering进行实测:若热点查询始终围绕相同两到三列,应仅对这些列使用ZOrder,并将选择性最高的列置于首位;若查询模式不稳定,则可优先采用Liquid Clustering,并减少人工调度OPTIMIZE的运维负担。相关决策辅助工具以Python编写并已在GitHub提供。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文