Multi-Version Concurrency Control (MVCC) is a common mechanism for achieving linearizable range queries in database systems and concurrent data-structures. The core idea is to keep previous versions of nodes to serve range queries, while still providing atomic reads and updates. Existing concurrent data-structure implementations, that support linearizable range queries, are either slow, use locks, or rely on blocking reclamation schemes. We present EEMARQ, the first scheme that uses MVCC with lock-free memory reclamation to obtain a fully lock-free data-structure supporting linearizable inserts, deletes, contains, and range queries. Evaluation shows that EEMARQ outperforms existing solutions across most workloads, with lower space overhead and while providing full lock freedom.
翻译:多版本货币统一控制(MVCC)是数据库系统和并行数据结构中实现可线性范围查询的共同机制,其核心思想是保持以前的节点版本,为范围查询服务,同时仍然提供原子阅读和更新;现有的并行数据结构实施,支持可线性范围查询,要么缓慢,要么使用锁,要么依靠阻断回收计划。我们介绍了EMARQ,这是第一个使用无锁内存回收利用MVCC获得完全无锁数据结构支持可线性插入、删除、包含和范围查询的计划。评价显示EMARQ在大多数工作量中超越现有解决方案,降低空间管理,同时提供完全锁自由。