其次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往下都是有序的