最近学习索引结构的进步建议用近似学习模型来替代现有的索引结构,比如b树。在这项工作中,我们提出了一个统一的基准,它将三种已经学习过的索引结构的优化实现与几种最先进的传统基准进行比较。通过使用四个真实的数据集,我们证明了在内存中只读工作负载下,学习索引结构在密集数组上的性能确实优于非学习索引。我们研究了缓存、流水线、数据集大小和密钥大小的影响。我们研究了学习的索引结构的性能,并建立了一个解释为什么学习的模型能取得如此好的性能。最后,我们研究了学习索引结构的其他重要特性,例如它们在多线程系统中的性能和构建时间。

1.

虽然索引结构是数据库管理系统中研究最充分的组成部分之一,但最近的工作[11,18]为这个几十年前的话题提供了一个新的视角,展示了如何使用机器学习技术来开发所谓的学习索引结构。与传统的索引结构(如[9,14,15,19,30,32])不同,学习索引结构构建底层数据的显式模型来提供有效的索引

更糟糕的是,缺乏开源实现迫使研究人员重新实现[18]技术,或使用封底计算,以与学习的索引结构进行比较。虽然这本身不是一件坏事,但我们很容易不优化基线,或做出其他不现实的假设,即使是出于最好的意图,这可能会使主要内容变得空洞。

在本文中,我们试图从三个方面解决这些问题:(1)我们提供了一个RMIs的第一个开源实现,供研究人员进行比较和改进;(2)我们创建了一个包含多个真实数据集和工作负载的存储库,用于测试;(3)我们创建了一个基准测试套件,它可以方便地与已知的和传统的索引结构进行比较。为了避免与弱基线进行比较,我们的开源基准测试套件[4]包含了广泛使用的索引结构实现,这些索引结构由原始作者进行了调整,或者两者兼有。

Understanding learned indexes  除了提供一个用于未来研究的开源基准测试外,我们还试图更深入地理解已学习的索引结构,扩展[16]的工作。首先,我们提出了三种最近学习的索引结构(RMIs [18], PGM[12]和RS[17])的帕累托分析。几种传统的索引结构,包括树、tries和哈希表。我们表明,在热缓存、紧密循环设置中,所有三种学习索引结构变体都可以提供比几种传统索引结构更好的性能/大小权衡。我们将这种分析扩展到多个数据集大小,32和64位整数,以及不同的搜索技术(即二进制、线性、插值)。

其次,我们分析了为什么学习的索引结构能取得如此好的性能。虽然我们无法找到一个完全解释索引结构性能的指标(直观地看,这样的指标似乎不存在),但我们提供了性能计数器和其他属性的统计分析。最重要的解释变量是缓存丢失,尽管缓存丢失本身不足以对统计意义重大的解释。令人惊讶的是,我们发现分支缺失并不能解释为什么学习的索引结构比传统结构性能更好,就像[18]中最初宣称的那样。事实上,我们发现学习索引结构和传统索引结构都能有效地使用分支

第三,我们分析索引结构在存在内存围栏、冷缓存和多线程环境下的性能,以测试更真实设置下的行为。在所有情况下,我们发现学习的方法都表现良好。

FORMULATION & DEFINITIONS

我们在一个零索引的排序数组

Benchmarking Learned Indexes(VLDB2021)相关推荐

  1. 来给博客除草了:Learned Indexes for a Google-scale Disk-based Database

    1. 引言 这是一篇业界发表在NeurlIPS 2020的Wip论文<Google规模的基于磁盘的数据库的学习索引>.自从学习索引祖师爷Tim Kraska@MIT在SIGMOD 2018 ...

  2. A Tutorial on Learned Multi-dimensional Indexes

    文章目录 ABSTRACT CCS CONCEPTS KEYWORDS 1 INTRODUCTION 2 OUTLINE OF THE TUTORIAL 2.1 Part 1: Learned Ind ...

  3. [论文阅读] The Case for Learned Index Structures

    文章目录 Intro 2 RANGE INDEX 2.3 A First, Naïve Learned Index 3 THE RM-INDEX 3.2 递归模型索引 3.3 Hybrid Index ...

  4. An Introduction to Hashing in the Era of Machine Learning

    In December 2017, researchers at Google and MIT published a provocative research paper about their e ...

  5. AI System 人工智能系统 TVM深度学习编译器 DSL IR优化 计算图 编译 优化 内存内核调度优化 DAG 图优化 DFS TaiChi 函数注册机 Registry

    DSL 领域专用语言 TVM深度学习编译器 AI System 人工智能系统 参考项目 TaiChi 三维动画渲染物理仿真引擎DSL TVM 深度学习DSL 密集计算DSL LLVM 模块化编译器 编 ...

  6. 【论文阅读】PGM-index

    文章目录 1. INTRODUCTION 2. PGM-INDEX 2.1 Optimal PLA-model 2.2 Indexing the PLA-model 3. DYNAMIC PGM-IN ...

  7. 西瓜书习题详解 机器学习能在互联网搜索的哪些环节起什么作用?

    看完了西瓜书的第一章,课后习题有这个问题.我先将这个问题定义为:机器学习在搜索引擎上的应用. 维基百科:搜索引擎(英语:Search Engine)是一种信息检索系统,旨在协助搜索存储在计算机系统中的 ...

  8. 计算机网络原理与实践ppt,从理论到实战,微软人工智能系统课程分享(附PPT)

    今天分享一门来自微软的最新课程,中文名称为人工智能系统,主要讲解支持人工智能的计算机系统设计,对应的英文课程名称为System for AI. 近年来人工智能特别是深度学习技术得到了飞速发展,这背后离 ...

  9. SQL Server Indexes

    Posted by scott on 2003年12月31日 Coveres the basics of indexes in SQL Server. Clustered versus non-clu ...

最新文章

  1. 2017.10.9 JVM入门学习
  2. Cisco交换机的经典配置(4)
  3. 微信小程序对接阿里云视频点播,备忘
  4. python中options设置_如何在AngularJS的ng-options中设置value属性?
  5. 如何找到Partner 相关设置里哪些是SAP 标准deliver的,哪些是我们自己创建的
  6. Sublime Text官方文档 中英文版本
  7. Mr.J-- jQuery学习笔记(三十)--属性操作方法(添加删除)
  8. rtsp 获取视频流 java_OpenCV - 如何捕获rtsp视频流
  9. 在职场,没有永远的朋友,也没有永远的敌人,因为只有利益
  10. CetnOS 6.7安装Hive 1.2.1
  11. python:画混淆矩阵
  12. 3D线激光成像数学模型简析与实现
  13. matlab 图片倒影_matlab-画个拱桥和倒影?
  14. 正则表达式 -文书网ktr
  15. Python基础与拾遗1:Python中的数字
  16. Linux基础命令----tailf 跟踪文件输出
  17. Win11,MySQL8 安装教程。
  18. [Shoi2007]Bookcase 书柜的尺寸 dp
  19. C语言判断一个数为超级素数,一个超级素数问题,时间限制是1秒钟,下面是题,哪位大触帮帮忙...
  20. docker 安装指定版本

热门文章

  1. 【Pytorch神经网络理论篇】 34 样本均衡+分类模型常见损失函数
  2. 调用微信红包接口返回(转)
  3. ps2遥控小车arduino程序初版
  4. 20P37 Premiere预设200种文字标题介绍动画合集包 200 Titles Collection下载
  5. C语言 crc32校验算法原理,CRC循环冗余校验的实现原理
  6. 转载:位图和矢量图的区别
  7. 使用Notepad格式化xml
  8. 它来了它来了,群晖NAS外网远程访问设置教程终于来了
  9. PHP字符串常用函数
  10. AI 编程助手 亚马逊CodeWhisperer使用简介