首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视图与物化视图

视图与物化视图
EN

Stack Overflow用户
提问于 2019-05-20 18:38:34
回答 1查看 5K关注 0票数 3

视图和物化视图的实际区别是什么?

我已经浏览了很多链接,他们说普通视图就像一个虚拟表,数据不能存储在磁盘上,以防物化的数据在磁盘上存储。但是从那里,我没有什么东西像什么时候使用普通视图,什么时候使用物化视图。如果我创建两个视图,我可以在我的模式中看到。我想知道我们使用普通视图和物化视图的确切时间和地点。请给我举例说明解决办法。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 13:58:07

视图只是一个存储的查询。这是保存一些复杂的业务逻辑(联接、筛选、派生值)的简便方法,这样就可以重用它并与其他用户共享。

物化视图也是保存查询的一种方式,但它将结果集具体化。也就是说,它创建磁盘上数据的副本。

使用物化视图的主要原因是性能的提高。每次我们从视图中选择时,我们都会执行整个查询;如果这是一个昂贵的查询,那么我们每次都要付出代价。通过物化视图,我们用磁盘空间来交换时间。

此外,我们可以像对待表一样对待物化视图:我们可以索引它们,我们可以添加键约束,甚至可以在外键中引用它们。

不使用物化视图的主要原因是成本。它们占用了磁盘空间。它们也必须得到维护。默认情况下,物化视图是静态的,这意味着它们的数据随着时间的推移逐渐变得陈旧。刷新物化视图可能很麻烦(取决于底层查询)。而查询视图总是给我们提供最新的数据视图。

以下只是指南,既不完整也不明确。

何时使用视图

  • 当我们想要使查询可重用、可共享和可控时
  • 当我们想拥有一个简单的界面而不是内部复杂性的时候
  • 当我们要强制对数据进行访问限制时

何时使用物化视图

  • 当我们想要对大量数据运行标准汇总(通常是聚合)查询时
  • 当我们需要来自另一个数据库的数据时,我们不能保证它的可用性
  • 视图使用的情况是:基数据的数量足够大,性能要求足够严格,使数据物化具有成本效益

你的问题的答案是在)。我无意重写那本精美的手册,但我会回答你的问题,因为我已经开始了,我注定要继续下去。

  1. 物化视图是来自一个或多个表的数据的副本,可能在其他模式中,甚至在其他数据库中。
  2. 正如我所说,复制数据伴随着间接费用。存储空间和处理陈旧数据是很大的成本。
  3. 视图只是一个查询,实际上没有什么可索引的。
  4. select * from user_extents where segment_name = 'name of mview'
  5. 提交时刷新不是空闲的。执行需要花费系统资源(源表上的事务将花费更长的时间)。此外,许多物化视图只能支持按需刷新。

(*)这是Oracle的文档,因为这是您的概要文件,但其他RDBMS平台有类似的文档。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56226462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档