为什么rockdb里的level 0存在重复key,level 1及以后的N就没有

level 0的sst文件中有重复数据,没明白为什么


其次rocksdb是基于LSMtree引擎的,写入流程:如上图。
写入的时候直接追加到memtable里面,写满之后转变为不可写的immutable,在写memtable中,可能会发生比如
对key a加2 删除2 ,那么会分别写两条记录
然后lsmtree会进行compaction,compaction分为两种,
minor compaction,将内存中的immutable转变为L0层sstable 此时sstable内容和内存中的immutable是一样的。
然后L0到L1也会做compaction,不过这次叫做major compaction,这次主要做的就是合并L0层的sstable,然后合并多版本将数据排序好。
所以L0层的会存在重复 而且无序的 ,L1往下都是有序的

key里有tso的时间,怎么会重复呢。先添加、后删除,tso不一样,这不是重复的

TSO并不是保证不重复数据的啊。只是事务开始和提交的一个序号标识。并不是不重复数据的一个保证。
相同key有不同版本,L0存在很正常啊

key里有tso吗?我理解是没有

参考下这个。

还有这个:

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。