美文网首页
InfluxDB compaction 策略分析

InfluxDB compaction 策略分析

作者: rickif | 来源:发表于2021-01-21 18:45 被阅读0次

LSM-tree 通过缓存的方式将随机写转化为顺序写,以极大提升写入性能。compaction 则是 LSM-tree 在尽量不影响写入性能下保证数据有序性的机制,中文可译为”压实“。InfluxDB 基于 LSM-tree 的变体 TSM-tree 结构,本文基于 InfluxDB v2.0.3@fe04d34版本,讨论其 compaction 策略。

按照 compaction 的输入数据来源,可分为 snapshot compaction 和 level compaction 两类。所有类型的 compaction 输出的文件类型都是一样的 tsm 文件,文件名形式为[generation]-[sequence].tsm,其中 generation 可以认为是 tsm 文件对应的 compaction 序号,而 sequence 则对应 TSM-tree 的 level。需要指出的是,sequence 可能会大于最大 level,即超过4,那么相应 sequence 的 level 在逻辑上依然是属于 level 4。

snapshot compaction

对 cache 执行的 snapshot compaction,由后台定时任务(周期1 s)检测触发,触发条件为 cache 的大小是否超过阈值(默认25 MB)或 cache 的最近一次写入时间是否早于阈值(默认4小时),cache 作为输入,输出 level 1的 tsm 文件,tsm 文件中的数据以 series key + field name 为粒度有序排列。

level compaction

对不同 level 的 tsm 文件执行的 level compaction,由后台定时任务(周期1 s)检测出发。实际上,选取 tsm 文件的粒度并不直接是文件,而是 generation。为了描述准确性,后文都将使用 generation。
TSM-tree 的 compaction 是类似于 RocksDB 的 tiered compaction,即除最大 level 外,只会对当前 level 的 generation 进行合并,在每个 level 可能会形成多个 sorted run,通过牺牲一定的读放大以减小写放大,这与时序数据写多读少的场景需求是匹配的。
TSM-tree 的最大 level 为4,可以根据 level compaction 是否需要合并多个 generation 的 tsm 文件将其分为 level 1-3 compaction 和 full compaction 两类。

level 1-3 compaction

level 1-3 compaction 主要作用是减小 level 内的 generation 的数量,以及执行 tombstone 文件的合并,触发条件是对应 level 内的 generation 超过阈值(level 1 超过8,level 2-3 超过4),或对应 level 内存在 tombstone 文件。

full compaction

full compaction 的主要作用是减少 generation 之间的数据冗余,因此通常会涉及多个 generation 合并。按照数据输入可划分为 full level compaction 和 optimize compaction。

full level compaction

full level compaction 的扫描范围为 level 1-3 的generation,触发条件为上次写入时间距今超过阈值(默认4小时),这个判定条件会导致在部分场景(如备份还原导致停机超过4小时)触发不必要的 full level compaction。不是所有 generation 都会参与 compaction。数据已经足够稠密的 generation(文件大小超过2GB,且文件 block 数量为 1000,且无 tombstone 文件)不会参与,当然 level 4 的 generation 也不会参与。

optimize compaction

optimize compaction 主要针对 level 4 的 generation。数据已经足够稠密的 generation(文件大小超过2GB,且文件 block 数量为 1000,且无 tombstone 文件)不会参与。

相关文章

网友评论

      本文标题:InfluxDB compaction 策略分析

      本文链接:https://www.haomeiwen.com/subject/vopcaktx.html