LSM merge的過程

caohongfeng666發表於2019-05-17
  1. merge過程對資料檔案的寫入


         變更首先寫入memory table;

         達到一定大小後flush 到儲存裝置中,此時叫低階別sstable;

         之後,合併到高階別的sstable。


     2. merge過程對索引的寫入


          索引的實現:每個SSTable有一個索引檔案,索引支援二分,所以可以用紅黑樹或跳錶




     3.   更新、刪除操作

SSTable是不能修改的,因而update和delete的做法也跟傳統方法有不同。Update時,只需要在memtable中存一個新版,刪除時則儲存一個“墓碑標記”,老版本的資料暫時不用管。在後續的read操作中,讀到新版本或者“墓碑標記”時,就立即返回,而老版本資料由於讀取順序,根本就不會被讀到!


那這些殘留的資料如何清理呢?當SSTable檔案過多時(通常數百個),會執行一個後臺任務對其進行合併,此時殘留的老版本資料、已刪除資料就被覆蓋、刪除等等。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25380026/viewspace-2644792/,如需轉載,請註明出處,否則將追究法律責任。

相關文章