中文

流水线还是非流水线,这是个问题

数据库 2020-02-04 v1

摘要

在设计查询处理原语时,一个关键的设计选择是查询计划中两个算子之间数据传输的方法。当我们为我们正在构建的内存数据库系统考虑这一关键设计机制时,很快意识到(令人惊讶地)这一概念并没有清晰的定义。论文中充斥着对流水线(pipelining)和阻塞(blocking)等术语的临时使用,但由于这些术语未被明确定义,很难完全理解归因于这些概念的结果。为解决这一局限,我们引入了一套清晰的术语,用以思考查询流水线中算子间的数据传输。我们表明流水线与非流水线并不存在清晰的定义,并且基于一个称为传输单元(unit-of-transfer)的简单概念存在一整套技术谱系。接下来,我们建立了算子间通信的分析模型,并强调了影响性能(针对内存数据库环境)的关键参数。借助该模型,我们将其应用于我们正在设计的系统,并突出了从这一实践中获得的见解。我们发现,就性能和内存占用等关键因素而言,流水线与非流水线查询执行之间的差距相当狭窄,因此系统设计师或许应重新思考内存数据库系统中流水线与非阻塞的概念。

关键词

引用

@article{arxiv.2002.00866,
  title  = {To pipeline or not to pipeline, that is the question},
  author = {Harshad Deshmukh and Bruhathi Sundarmurthy and Jignesh M. Patel},
  journal= {arXiv preprint arXiv:2002.00866},
  year   = {2020}
}