根據《大規模分佈式存儲系統:原理解析與架構實戰》,有三類單機存儲引擎:c++
哈希存儲引擎是哈希表的持久化實現;數據庫
B樹存儲引擎是B樹的持久化實現;架構
LSM樹(Log Structure Merge Tree)存儲引擎採用批量轉儲技術來避免磁盤隨機寫入。分佈式
1 寫入過程:對日誌進行追加寫入,更新內存索引,標記老紀錄無效,等待按期rewrite。
2 讀取過程:檢索內存,讀盤
3 rewrite 過程:限速讀取一個數據分片,順序讀取索引表,寫回新文件,切換,刪除老文件。性能
lmdb優化
利用mmap 直接進行映射,儘可能少內存拷貝(能夠爲只讀直接返回引擎中的內存),提升讀性能
利用tree 方式組織數據,而且和系統虛擬內存頁大小一致的頁進行文件組織
優勢:專門進行了讀優化
缺點:和系統頁同樣大的組織方式(4k),若是單條record爲1k,浪費嚴重日誌
leveldb索引
利用層表方式組織數據,優化寫入速度 優勢:爲寫入優化,而且進行壓縮 缺點:寫入太頻繁,來不及重寫磁盤會爆掉(LSM通病)。最壞落盤7次,不可忍受。內存