(一)研究目的
实现崩溃一致性,减少 PM 写入,并保持优秀的读性能。
(二)研究背景
根据结构特性,现有的 PM 索引研究大致可以分为B+Tree based、Trie-based 和 hybrid(混合) 三种类型。B+Tree based 结构(例如 CDDS-Tree、wB+Tree、NVTree、FPTree、FASTFAIR)在索引更新的关键代码路径上的持久化原语的数量是次优的。Trie-based 结构(例如 WORT)在某些键分布上获得了优异的写性能,但代价是范围扫描效率不佳。对于 hybrid 结构,其思想是将多个物理索引结构组合成一个逻辑索引。例如,HiKV 将哈希表与 B+Tree 相结合,但是 HiKV 的 DRAM 消耗和恢复成本较高。
现有 PM 索引结构经常执行许多高代价的持久化原语来维护其结构属性或更新元数据。例如,在 FASTFAIR 中,对叶节点的插入平均需要保持一半的缓存线,以保持节点有序和持久。FPTree 需要在每次更新时将指纹和位图持久化到叶子节点中。但是,只有插入的键值需要一次到 PM 的往返才能保持持久性。这种对 PM 的额外写入称为结构维护开销(structural maintenance overhead,SMO)。因此需要减少 SMO。
fencing 指令会耗尽 CPU 存储缓冲区并阻塞管道,因此需要减少 fencing 指令。 如果可以批量执行索引更新,那么持久性开销可以平摊。例如,可以将一批键值条目插入 PM 中的叶节点,对元数据只进行一次更新。
(三)研究概述
基于批量更新的