18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 实体化视图(数据库)

实体化视图(数据库)

时间:2022-11-12 20:30:01 | 来源:信息时代

时间:2022-11-12 20:30:01 来源:信息时代

    实体化视图 : 一个其内容已计算并存储的视图。用CREAT VIEW语句定义视图时,DBMS只将视图的定义存在数据字典中,这种视图不对应实际数据存储,当引用视图时DBMS临时去执行视图的定义。这种视图的好处是维护方便,更新基本表时不会影响其上定义的视图。
实体化视图则不仅存储视图的定义,而且存储视图对应的数据,一些查询可以直接用实体化视图中的数据回答,从而加快了查询速度。但实体化视图中的数据属于冗余数据,是由基本表中的数据转换得到的,因而当基本表更新时,实体化视图必须使用有效手段进行维护。显然实体化视图更适合以查询为主的应用。
实体化视图技术涉及的问题包括: 选择哪些视图进行实体化能带来最大收益? 当基本表修改时如何维护实体化视图?查询优化器如何利用实体化视图优化查询?
在选择视图进行实体化的时候,需要考虑下列因素:这些视图实体化后要有利于以后的查询操作,实体化这些视图时需要的空间开销要小,对这些实体化的视图进行维护的开销要小。确定实体化视图的典型方法是贪心算法,其基本思想是根据视图之间的依赖关系,在一定的存储空间约束下,选择获益最大的那些视图进行实体化。
当实体化视图所依赖的基本表发生更新时,实体化视图必须进行维护。实体化视图维护的简单方法是对相应的基表设置触发器,当基表更新时触发实体化视图的重新计算。实体化视图维护的更有效的方法是增量维护,即用基本表的变化量计算视图的变化量,用变化量去修改视图。一般情况下,增量维护的代价比重计算要低。
视图增量维护的基本原理是: 对每一个视图,根据它的定义,导出一个增量维护表达式,通过计算得到视图的增量。例如, V=R1⋈R2。用△R和▽R分别表示插入到R和从R中删除的元组。当R1中新增加了元组△R1时, 因此,V=(R1+△R1)⋈R2=R1⋈R2+△R1⋈R2。 V的增量表达式为△R1⋈R2。同样,当从R1中删除元组▽R1时,V的增量表达式为▽R1⋈R2
根据维护的时机,实体化视图的增量维护算法可以分为立即维护(immediate)和延迟维护(deferred)两大类。立即维护是一个事务在提交前,要将对一个表所做的修改反映到所有引用该表的视图中,视图维护成为事务的一部分,加重了事务的负担,但可以保持视图与基本表同步变化。延迟维护是周期性地检查和维护所有视图,采用这种方式,视图中的数据可能不能反映最新情况。
查询优化器利用实体化视图优化查询的方法是查询重写。给定一组关系R,以及定义在R上的一组视图V和查询Q,对Q中的查询q,如果存在查询q1,其中q1至少引用了V中的一个视图,而且对任意的数据库实例D,q1(D)=q(D),则称q1是q的查询重写。如果q1只引用了V中的视图,而没有引用R中的任何关系,则称上述的查询重写q1为完全重写,否则称为部分重写。
对于一个select-project-join查询,视图V可用的条件是:
(1)必须存在从视图V的FROM子句中表到查询Q的FROM子句中表的一个映射,可以是一个多对一的映射。
(2) V不能丢弃Q所需要的任何元组。
(3) V不能投影掉Q所需要的任何属性,除非这些属性可以通过其他的视图进行恢复。
在不考虑实体化视图的传统查询优化中,优化器可以根据FROM子句确定与查询相关的表。而支持实体化视图的查询优化,需要根据上面说明的视图可用性条件决定哪些视图与查询是相关的,从中去除代价高的视图,当能够确定利用该视图可以降低查询代价时,利用该视图重写查询。例如,用户提交的查询是R⋈S⋈T,有实体化视图V=R⋈S,这时可以将用户查询重写为V⋈T,利用实体化视图回答用户查询。
另一方面,必要时优化器也会将基于实体化视图的查询重写为基于基表的查询。例如,用户提交的查询是σA=3(V),假设实体化视图V上没有任何索引,但在R的属性A上有索引,在S的连接属性B上也有索引, 这时将用户查询重写为σA=3(R)⋈S,对关系R进行索引扫描,找出满足条件A=3的元组,然后与关系S进行索引连接得到查询结果,其执行效率可能高于对实体化视图V进行全表扫描。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭