A skiplist is a fundamental data structure widely used in systems and applications for indexing data stores. In this work, we introduce Foresight, a cache-friendly skiplist optimization. Extending Foresight to concurrent settings introduces significant synchronization challenges that we identify and address. Foresight is a surgical optimization, easy to integrate into a wide variety of skiplist designs. We apply it to one sequential and three concurrent skiplist designs and observe throughput improvements of up to 45% in microbenchmarks. When applied to a skiplist-based index in the DBx1000 in-memory database, Foresight yields end-to-end performance gains of up to 15%.
翻译:跳表是一种基础数据结构,广泛应用于系统和应用中的数据存储索引。本文提出了一种名为 Foresight 的缓存友好型跳表优化方法。将 Foresight 扩展到并发场景会带来显著的同步挑战,我们识别并解决了这些挑战。Foresight 是一种精确优化,易于集成到各种跳表设计中。我们将其应用于一种顺序跳表设计和三种并发跳表设计,在微基准测试中观察到吞吐量提升高达 45%。当应用于 DBx1000 内存数据库中基于跳表的索引时,Foresight 带来了高达 15% 的端到端性能提升。