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树。