查询处理中的物化2024 年 8 月 28 日 | 3 分钟阅读 在前文中,我们简要介绍了物化以及如何评估表达式的多个操作。 物化是一种简单的方法,用于评估给定查询的多个操作并将结果存储在临时关系中。结果可以是任何连接条件、选择条件等的输出。因此,物化是为用户查询创建和设置已评估操作结果视图的过程。它类似于缓存内存,搜索到的数据会临时存储在那里。通过表达式的图示表示,我们可以轻松理解物化的工作原理。操作符树用于表示表达式。 物化使用以下方法来评估给定表达式的操作:
我们还将描述的评估称为物化评估,因为一个操作的结果被物化并用于下一个操作的评估,依此类推。 物化评估的成本估算物化评估的成本估算过程与算法成本的估算过程不同。这是因为在分析算法的成本时,我们不包括将结果写入磁盘的成本。但在表达式的评估中,我们不仅计算所有操作的成本,还包括将当前已评估操作的结果写入磁盘的成本。 为了估算物化评估的成本,我们假设结果存储在缓冲区中,当缓冲区完全填满时,结果将写入磁盘。 令写入的总块数为 br。因此,我们可以估算 br 为: br = nr/fr。 这里,nr 是结果关系 r 中元组的估计数量,fr 是关系 r 的记录数,该记录数适合一个块。因此,fr 是结果关系 r 的阻塞因子。 有了这个,我们还需要通过估算所需磁盘的数量来计算传输时间。这是因为在块的连续写入之间,磁盘磁头可能已经移动。因此,我们可以估算: 寻道次数 = Γ br/ bbꓶ 这里,bb 定义了输出缓冲区的大小,即以块为单位测量。 我们可以使用双缓冲的概念来优化物化过程的成本估算。双缓冲是一种使用两个缓冲区的技术,其中一个缓冲区连续执行算法,而另一个缓冲区正在被写入。它通过将 CPU 活动与 I/O 活动并行执行,从而使算法执行得更快。我们还可以通过为输出缓冲区分配额外的块并一次性写入多个块来减少寻道次数。 下一主题合并连接算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。