Buffered-tree 也稱爲COLA,即cache-oblivious,能夠不須要知道具體內存大小和一個塊的大小,使用一套邏輯進行處理,所以內存大小可知,內存可能被臨時佔用去作其它事情。算法
Buffered-tree典型的實現是TokuDB,在裏面被稱爲Fractal-tree。性能
其算法的基本過程爲:spa
3. 若是再寫入一個值「11」,由於第一行已經寫滿,因此將「3」取出,和「11」排序,嘗試寫入第二行。又由於第二行也定滿了,因此將第二行取出,對「3」,「11」,「5」,「10」進行排序,寫入第四行。結果以下圖所示。指針
從上面操做過程可知,Buffered-tree與LSM的思想相似,每次將數據從上一層取出,與外部數據進行歸併後寫入新的隊列中。這對SAS磁盤很是友好,對磁盤的寫入性能有很大的提高。排序
爲了提升查詢速度,在合併的時候,上層須要持有下層數據的指針。所以最後的結構以下圖:隊列
關於B-tree,Append-file,Buffered-tree三種讀寫方式的算法複雜度爲:內存
舉例說明損耗:io
對於100W 個128字節。N = 2^30;log(N) = 30;class
磁盤中1MB數據塊有8192個數據,B = 8192;logB = 13;file
結論:Buffered-tree對IO的使用遠遠小於B樹。