查询处理中的流水线

2024 年 8 月 28 日 | 阅读 2 分钟

在上一节中,我们学习了物化,其中我们通过临时关系来评估给定表达式的多个操作。但是,这会导致产生大量临时文件的缺点。这使得查询评估效率低下。然而,查询的评估应高效以产生有效的结果。

在这里,我们将讨论一种评估表达式中多个操作的另一种方法,它比物化更有效。这种更有效的方法称为流水线。流水线通过减少临时文件的数量来提高查询评估的效率。实际上,我们通过将多个操作合并到流水线中来减少临时文件的创建。当前正在执行的一个操作的结果传递给下一个操作以供其执行,并且该链一直持续到所有操作完成,我们得到表达式的最终输出。这种类型的评估过程称为流水线评估

流水线的优点

创建操作流水线有以下优点:

  • 它消除了物化过程中读取和写入临时关系的成本,从而降低了查询评估的成本。
  • 如果我们将在查询评估计划的根运算符与其输入合并到流水线中,则生成查询结果的过程将变得更快。因此,这对于用户来说是有益的,因为他们可以在其查询的输出生成后立即查看结果。否则,用户需要等待很长时间才能获取和查看任何查询结果。

流水线与物化

虽然这两种方法都用于评估表达式的多个操作,但它们之间存在一些差异。差异点在下表中描述

流水线物化
这是评估多个操作的现代方法。这是评估多个操作的传统方法。
它不使用任何临时关系来存储已评估操作的结果。它使用临时关系来存储已评估操作的结果。因此,它需要更多的临时文件和 I/O。
这是一种更有效的查询评估方法,因为它能快速生成结果。效率较低,因为它需要时间来生成查询结果。
它需要大量的内存缓冲区来生成输出。内存缓冲区不足会导致抖动。它在查询评估方面对内存缓冲区的要求不高。
如果发生抖动,性能会很差。物化不会发生抖动。因此,在这种情况下,物化具有更好的性能。
它优化了查询评估的成本。因为它不包含读取和写入临时存储的成本。总成本包括操作成本以及在临时存储上读写结果的成本。

下一个主题高级查询优化