rocksdb compaction流程理解

1、首先通過每層的分數score來決定那個level可以進行compaction操作。

2、然後啓動這個compaction放在獨立中等待線程調度處理

3、rocksdb對一個大的compaciton進行了切分,切分成了多個subcompation,然後多個subcompaction會通過子線程進行處理。多個線程會併發處理subcompation。

4、每個subcompation處理就是將這個subcompation包含的哪些兩個level中的文件放在input數組中,然後通過一個mergeIterator來遍歷這些多路SST文件,通過一個最小堆的方式把多路文件中的key進行來排序,然後每次取出堆的堆頂元素。

5、第一次的話需要創建一個輸出output文件用於寫排序後的k-v數據。寫output文件也是通過一個table_builder的方式將KV寫到新的文件中的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章