LSM merge的過程
-
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LSM(Log Structured Merge Trees ) 筆記Struct筆記
- 你在開發過程中使用Git Rebase還是Git Merge?Git
- LSM 優化系列(三)-- SILK- Preventing Latency Spikes in Log-Structured Merge Key-Value Stores ATC‘19優化Struct
- LSM的儲存和定位
- promisify 的過程
- OAuth 2.0以及它的工作過程工作過程OAuth
- iOS main()執行前的過程 + weak 置 nil的過程iOSAI
- LSM 樹詳解
- MySQL的session過程MySqlSession
- Window 的新增過程
- 從BST到LSM的進階之路
- LSM樹的不同實現介紹
- 簡述LSM-Tree
- SQL中Merge的用法SQL
- 要命的MERGE JOIN CARTESIAN
- 指令的執行過程
- jsp的執行過程JS
- View 的繪製過程View
- 安裝wampserver的過程Server
- memcached的學習過程
- main的啟動過程AI
- xxfpmW 的誕生過程
- https的通訊過程HTTP
- HTTP的請求過程HTTP
- MongoDB的選舉過程MongoDB
- Angular的啟動過程Angular
- webpack的安裝過程Web
- java類的建立過程Java
- oracle的儲存過程Oracle儲存過程
- Merge Or Rebase
- git mergeGit
- sql merge intoSQL
- bindService過程
- ou have not concluded your merge (MERGE_HEAD exists)
- 【圖片+程式碼】:GCC 連結過程中的【重定位】過程分析GC
- 痛苦的過程,編譯glomap編譯
- DNS的原理和解析過程DNS
- Mysql 儲存過程的使用MySql儲存過程