compaction策略
compaction的主要作用是數據的gc和歸併排序,是lsm-tree系統正常運轉必須要做的操作,但是compaction任務運行期間會帶來很大的資源開銷,壓縮/解壓縮、數據拷貝和compare消耗大量cpu,讀寫數據引起disk I/O。compaction策略約束了lsm-tree的形狀,決定哪些文件需要合併、任務的大小和觸發的條件,不同的策略對讀寫放大、空間放大和臨時空間的大小有不同的影響,一般系統會支持不同的策略並配有多個調整參數,可根據不同的應用場景選取更合適的方式。
基礎概念
讀放大
每次讀請求帶來的讀盤次數
寫放大
每寫1byte數據帶來n bytes的數據寫盤,寫放大爲n。本質上寫放大需要跟全局有序做權衡,對序要求越高的系統寫放大就會越嚴重,B-Tree系列是隨時有序的代表,寫放大也更爲嚴重,而LS