4.2.3 物化视图

4.2.3 物化视图

物化视图

特定数据库系统允许存储视图关系,但是它们保证:如果用于定义视图的实际关系改变,视图也跟着修改。这样的视图被称为物化视图(materialized view)。

物化视图的内容也必须更新

例如,考察视图departments_total_salary。如果上述视图是物化的,它的结果就会存放在数据库中然而,如果一个instructor元组被插入到instructor关系中,或者从instructor关系中删除,定义视图的查询结果就会变化,其结果是物化视图的内容也必须更新。类似地,如果一位教师的工资被更新,那么departments_total_salary中对应于该教师所在系的元组必须更新。

物化视图维护

保持物化视图一直在最新状态的过程称为物化视图维护(materialized view maintenance),或者通常简称视图维护( view maintenance),这将在13.5节进行介绍。

视图维护的时机

  • 构成视图定义的任何关系被更新时,可以马上进行视图维护。
  • 然而某些数据库系统在视图被访问时才执行视图维护。
  • 还有一些系统仅采用周期性的物化视图更新方式,在这种情况下,当物化视图被使用时,其中的内容可能是陈旧的,或者说过时的。如果应用需要最新数据的话,这种方式是不适用的。

某些数据库系统允许数据库管理员来控制在每个物化视图上需要采取上述的哪种方式。

物化视图的优点

  • 频繁使用视图的应用将会从视图的物化中获益。
  • 那些需要快速响应基于大关系上聚集计算的特定查询也会从创建与查询相对应的物化视图中受益良多。在这种情况下,聚集结果很可能比定义视图的大关系要小得多,其结果是利用物化视图来回答査询就很快,它避免了读取大的底层关系。

当然,物化视图查询所带来的好处还需要与存储代价和增加的更新开销相权衡。

物化视图由使用的数据库系统实现

SQL没有定义指定物化视图的标准方式,但是很多数据库系统提供了各自的SQL扩展来实现这项任务。
一些数据库系统在底层关系变化时,总是把物化视图保持在最新状态;
也有另外一些系统允许物化视图过时,但周期性地重新计算物化视图。