Multiversioning is widely used in databases, transactional memory, and concurrent data structures. It can be used to support read-only transactions that appear atomic in the presence of concurrent update operations. Any system that maintains multiple versions of each object needs a way of efficiently reclaiming them. We experimentally compare various existing reclamation techniques by applying them to a multiversion tree and a multiversion hash table. Using insights from these experiments, we develop two new multiversion garbage collection (MVGC) techniques. These techniques use two novel concurrent version list data structures. Our experimental evaluation shows that our fastest technique is competitive with the fastest existing MVGC techniques, while using significantly less space on some workloads. Our new techniques provide strong theoretical bounds, especially on space usage. These bounds ensure that the schemes have consistent performance, avoiding the very high worst-case space usage of other techniques.
翻译:在数据库、交易存储和并行数据结构中广泛使用多种转换方法。它可以用来支持在同时更新操作的情况下出现原子的只读交易。任何维持每个对象多种版本的系统都需要一种有效回收的方法。我们实验性地比较各种现有的回收技术,将它们应用到多版本树和多版本散列表。我们利用这些实验的洞察力开发了两种新的多版本垃圾收集技术。这些技术使用两种新型的同步版本列表数据结构。我们的实验性评估表明,我们最快的技术与现有最快的MVGC技术相比具有竞争力,同时对一些工作量使用的空间要少得多。我们的新技术提供了很强的理论界限,特别是在空间使用方面。这些界限确保了这些技术的一贯性,避免了其他技术最差的空间使用。