关于rocksdb中的KV排序,到底是在那个阶段完成排序的呢?是memtable/immutable memtable/compaction过程中的具体哪一步?302课程中董菲老师说是在compaction过程中完成排序的(如果我没理解错的话),有点怀疑,因为这样成本有点高啊,为啥不在memtable中完成排序呢?这样明显成本很低啊
memtable中是skiplist,本来是有序的。
memtable转成immutable memtable后就不能写了。
然后immutable memtable刷L0的时候,导致有重叠。
然后compact到l1的时候,再把重叠的搞成有序的。
大概是这样:
memtable: key1–key5
转换成
immutablememtable1: key1–key5
过了一会儿,又写了个memtable: key3–key6
然后又转成了immutable memtable2:key3–key6
然后flush成l0的sst,就成了2个sst: key1–key5 key3–key6
然后l0再compact到l1
就变成了 key1-key6了。
明白了吗小伙砸?
2 个赞
谢啦!
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。