NBTree: a Lock-free PM-friendly Persistent B -Tree for eADR-enab(6)
(2) num存储已提交插入和in-fight插入占用的条目数,用于处理并发插入。(3)bitmap,用于跟踪已提交的插入在叶子节点中的位置。(4) data_ptr表示其key-value块的地址。(5) copy_ptr,用于在叶子执行SMO时存储新分配的叶子的地址。(6)用于跟踪SMO状态的标志。(7)旁边要标明同辈叶子的地址。对于内部节点,NBTree采用FAST&FAIR结构,维护有序数组。
图1 The overall architecture of NBTree.3.2 Base operations NBTree通过最小化PM线访问和最大化缓存利用率来减少基本操作(插入、更新、删除和搜索)的开销。对于每一个基本操作,NBTree首先通过搜索内存中的内部节点来定位对应的叶子节点。然后,它使用log-structured insert, in-place update/delete 和 efcient search将PM行在持久叶节点上的平均读/写次数减少到1次,并增加写命中和写合并。在恢复过程中,NBTree从持久叶子节点中检索所有键值为非零的键值表项。