完全刷新和快速刷新在物化视图中有什么区别?

4
我在自己的模式中有一个物化视图,其源是其他模式下的表。但是,这个主表有900行,并且我在这个主表上执行了一些DML操作。之后,我会刷新这个物化视图,你知道的。我做了一些研究,“如何刷新我的物化视图”,它说“你可以进行完全刷新或快速刷新”,但我不理解这些解决方案的含义,所以我的问题很简单:
MV中完全刷新和快速刷新有什么区别?
附言:如果我的主表有100万行或更多行,我应该选择哪一个(快速或完全)?
谢谢您的回复。

1
你有试过阅读Oracle文档吗?“快速刷新”始终是首选,但它有许多条件/要求;你必须检查它们是否满足。完全刷新意味着整个视图从头开始计算,可能需要很长时间。快速刷新意味着只有受影响的行将被重新计算 - 有时这个概念甚至没有意义(在这种情况下,视图将无法进行快速刷新)。https://docs.oracle.com/database/121/DWHSG/refresh.htm#DWHSG015 - user5683823
1
文档和适当的谷歌搜索可以帮助您理解这些内容。 - XING
1
我正在阅读文档,但是我不理解他们在说什么。谢谢你的回复,很有帮助。 - MFARKAN
2个回答

9
"完全刷新"是指您截断整个物化视图并插入新数据。
"快速刷新"是指您只更新(或插入/删除)主表中已更改的行。
而仅供参考,"强制刷新"表示Oracle尝试进行快速刷新,如果这不可能,则进行"完全刷新"。
通常,快速刷新比完全刷新要快得多,但它有限制。您必须在主表上定义MATERIALIZED VIEW LOG。
这里是完整的限制列表快速刷新的一般限制,其中有相当多的限制。

谢谢您的回复!我明白 :) - MFARKAN
如果我们只是调用 DBMS_MVIEW.REFRESH('m_view_name' );,那么哪一个会运行? - mcvkr
这取决于MView是如何创建的。您无法在刷新时设置它。 - Wernfried Domscheit

0

一如既往地,它取决于情况,因此如果可能的话,请尝试两种方法并对您的应用程序进行测量。通常,快速刷新可能会更快,前提是只有一小部分数据发生了更改。如果所有数据都已更改,则完全刷新更好。

通过快速刷新,Oracle跟踪基本表的更改,并在刷新时将更改应用于物化视图。另一方面,完全刷新从头开始重建物化视图。对于数百万行,这将非常昂贵,但同样,如果不了解您的应用程序的更多信息,则无法选择最佳选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接