cpu代表什么意思 pu代表什么意思

预计算和缓存是计算机领域提高性能以及降低成本的最常见的手段之一 。对于那些经常重复的请求 , 如果可以通过缓存回答 , 比重新计算结果或从速度较慢的数据存储中读取要快得多 , 消耗更少的系统资源 。在数据库领域中 , 物化视图是预计算和缓存的自然体现 。
本文主要介绍什么是物化视图 , 以及如何实现基于物化视图的查询改写 。
在之一部分 , 我们会简单介绍物化视图 , 并介绍基于物化视图的查询改写的用途 。在第二部分 , 我们将介绍查询优化器使用物化视图进行查询改写的匹配和改写过程 。最后 , 我们将介绍查询改写的几种实现方式 , 及其优缺点 。
背景介绍物化视图
物化视图是将查询结果预先计算并存储的一张特殊的表 。"物化"(Materialized) 这个词是相对于普通视图而言 。普通视图较普通的表提供了易用性和灵活性 , 但无法加快数据访问的速度 。物化视图像是视图的缓存 , 它不是在运行时构建和计算数据集 , 而是在创建的时候预先计算、存储和优化数据访问 , 并自动刷新来保证数据的实时性 。

cpu代表什么意思  pu代表什么意思

文章插图
对于数据仓库 , 物化视图最重要的功能就是查询加速 。数据仓库中存在大量在大型表上执行复杂的查询 , 这些查询会消耗大量资源和时间 。物化视图可以通过预计算的结果回答查询 , 消除昂贵的联接和聚合所带来的开销 , 大幅度改善查询处理时间 , 降低系统负载 。对于可以预见并反复使用相同子查询结果的查询 , 物化视图特别有用 。
为了实现物化视图的潜力 , 需要解决三个问题:
物化视图选择:选择哪些查询和表构建物化视图;物化视图维护:减少物化视图更新成本和时间;物化视图运用:如何使用物化视图加速查询 。本文主要从查询优化器的角度 , 介绍使用物化视图加速查询背后的技术实现 。
基于物化视图的查询改写
直接查询物化视图可以大幅度改善查询处理时间 , 但是需要用户修改查询语句 。使用物化视图加速查询的一个重要问题是 , 如何采用一种系统化和自动化的 ***  , 自动使用物化视图回答查询 。通过这种透明改写 , 物化视图可以像索引一样添加或删除 , 而不会影响已有 SQL 。
查询改写使得物化视图具有广泛的用途:
物化视图可以透明地改写查询 , 无需改造业务就能使用物化加速查询;方便地应用缓存公共结果集 , 以及预计算等跨查询优化手段;对于数据仓库 , 数据集成场景 , 物化视图可以物化外表结果 , 屏蔽多个数据源的差异 , 实现本地副本或读写分离;查询改写结合自动构建物化视图 , 实现数据库自治加速 。查询改写的问题定义
为了实现更大范围的改写 , 查询改写通常被集成在优化器规则中 。这有几个方面的好处 。
首先查询改写可以利用优化器其他规则 。依靠优化器其他规则将查询转换成标准和统一的形式 , 简化匹配流程 , 增加改写范围 。其中比较重要的规则是列消除 , 谓词下推 , 解关联子查询等 。解关联子查询规则允许物化视图对包含关联子查询的查询进行改写加速 。
其次 , 优化器可以递归每一个子树能否被某个视图进行改写 。每个相关视图都会对每个子树产生多次改写 , 一个查询语句不同部分可能被不同的视图改写 。最终所有的改写都进入基于成本的选择器中 , 与原始查询一起选出更优的查询计划 。
查询改写算法只需要考虑给定的查询表达式和视图 , 判断这个查询表达式能否从视图中计算出来 , 然后从视图上构造一个等价的补偿表达式 , 与原查询表达式等价 。查询改写的范围应该尽可能大 , 查询改写的目标是使用少量物化视图改写大量查询 。最终由优化器选择出一个更优的查询计划 。
查询改写检查优化器通过多种方式来改写查询 。最简单的一种情况是物化视图的查询与查询完全匹配 , 符合这种查询重写类型的查询数量很少 。为了进行更通用的匹配 , 优化器会尝试使用各种规则构造一个等价表达式改写查询 。

推荐阅读