Bw树与LLAMA的关系?
Bw树是构建在无闩锁、日志结构、访问方法感知(Latch-free,Log-structured,Access-Method Aware,LLAMA)之上的存储子系统。这种分层使得Bw树可以动态地增长和收缩,同时使树的垃圾收集和页管理是透明的。
LLAMA中的Bw树感知可以将几个增量节点合并到单一的连续物理位置。如果增量节点中的两个更新相互抵消(例如:一个插入后面接着一个删除),则也可以执行它们的逻辑合并,并且可以只持久化后面的删除操作。
评论
有用 0
B+树的并发机制:1. 减小加锁粒度,从索引粒度的S/X锁到树节点粒度的S/X/SX锁;2. 降低加锁频率,利用基于版本号的乐观读机制 + 自底向上的细粒度写锁。因此,B+树的多线程扩展性得到了极大提升。然而,在四十多年的硬件发展历程中,不管是片上处理器的架构设计,还是存储器件的访问特性,都发生了颠覆性的变化。在面对新的硬件特性时,B+树原有的结构设计很大程度上导致它无法发挥出最优的硬件性能,无法榨干所有的硬件红利,这主要表现在两个方面:
多核处理器的迅速发展。随着摩尔定律的逐渐失效,单核处理器的性能无法持续地线性增长,CPU制造商们向多核处理器方向转变。为了发挥出多核处理器的性能优势,索引结构需要设计更加优秀的并发控制机制。然而,现有的latch-based B+树存在两个难以解决的问题:1. 修改树节点的线程需要先持有树节点的锁,锁机制会带来一定程度的堵塞,并且可能导致死锁/活锁等问题;2. 传统B+树的修改操作是本地更新的(In-place),这会导致其它处理器上包含该行数据的缓存行失效,这类开销称之为cache coherence cost。尤其在以NUMA架构为基础的多核处理器平台上,传统in-place更新机制容易引入昂贵的cache coherence cost(具体看前文《B+树并发控制机制的前世今生》)。上述两个问题会随着线程数量的增加变得更加严重,所以传统latch-based B+树依然容易引入性能瓶颈,限制了它的多线程扩展性。
存储器件的颠覆性变革。传统磁盘的I/O寻道延迟很高,这导致它的访问延迟(~10ms)远高于内存(~100ns),并且它的随机访问性能远低于顺序访问性能,这对上层软件系统的设计产生了极大的影响。为了解决这一问题,存储器件的演进方向主要包含两类:(1) 闪存(Solid State Disk,SSD)将I/O访问延迟降低了三个数量级(~10us),并且它的随机读取性能与顺序读取性能相似;(2) 非易失内存(Non-Volatile Main Memory,NVMM)具备传统内存的性能和字节寻址的特性,并且具备磁盘的数据持久性。它将传统的快速易失性内存+慢速持久性外存两层存储架构合并成字节寻址的单层持久性内存架构,这将对上层软件系统的设计产生颠覆性的变化。然而,B+树是针对磁盘设计的,无法完全发挥出新型存储器件的性能优势。
参考https://zhuanlan.zhihu.com/p/414088318
评论
有用 0
墨值悬赏


