doris实践——Compaction 策略

1.基本概念

Doris的Compaction 策略决定什么时候将哪些小文件合并成大文件。适当的调整 Compaction 的策略,可以极大地提升导入效率和查询效率。Doris 当前提供了 2种 compaction 策略,通过表属性的 compaction_policy 参数指定。

①size_based compaction 策略:默认策略,对大多数场景适用。
("compaction_policy" = "size_based")
②time_series compaction 策略:是为日志、时序等场景优化的策略。它利用时序数据具有时间局部性的特点,将相邻时间写入的小文件合并成大文件,每个文件只会参与一次 compaction 就合并成比较大的文件,减少反复 compaction 带来的写放大。
("compaction_policy" = "time_series")

2.使用实践

默认策略就不说了,主要是time_series compaction 策略针对主键模型和聚合模型使用。我们分别将个别主键模型和清洗日志的聚合模型的Compaction 策略调整为time_series。
起初可以看到Compaction Score 有明显的下降。但是随着时间越来越长。大概在一周后,我们发现主键模型的查询效率越来越低,清洗日志的聚合模型几乎没有影响

3.分析总结

①分析

为什么主键模型查询效率越来越低呢?基于time_series compaction 策略的基本概念,它将相邻时间写入的小文件合并成大文件,每个文件只会参与一次 compaction。在主键模型使用time_series策略的时候,每个文件只会参与一次 compaction,那么同一个主键的数据会compaction到多个文件,无法真正merge。时间越长,版本就越多,查询效率越来越低。
日志聚合模型为什么没有影响呢?因为日志聚合模型的主键和时间相关,并且日志聚合模型同一天的数据不会重复出现。所以日志聚合模型的版本不会有太大影响。

②总结

Doris的time_series compaction 策略只适用于日志实时消费的模型,不要轻易使用,特别是需要覆盖属性的主键模型不能使用time_series compaction 策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值