LSM樹
LSM的英文名是 log-structured merge-tree。它適合寫入量很大的數據庫。執行寫入操作時,先把數據寫在C0層級,通常C0放在內存中。當C0層級的數據達到設定的閾值時,將數據合併到C1層級。當C1層級達到閾值時,合併到C2層級。這樣層層合併,文件數量越來越少,文件變得越來越大。每個層級的數據都是排序的,合併的時候通過類似歸併排序的算法實現快速排序。對於刪除操作,僅僅將數據標記爲已刪除,合併的時候跳過已標記爲刪除的數據,達到物理刪除的效果。
下圖展示了這種合併原理:
LSM樹的工作機制能夠讓機械硬盤發揮最大的效果,因爲寫入的過程中所有的操作都是順序讀寫。