【问题标题】:What is the difference between complete refresh and fast refresh in materialized view?物化视图中的完全刷新和快速刷新有什么区别?
【发布时间】:2017-05-18 20:09:37
【问题描述】:

我在我自己的模式中有物化视图,物化视图源是另一个模式表,但是,这个主表有 ​​900 行,我在这个主表上做了一些 dml 操作,之后我将刷新这个物化视图,你知道,我做了一些研究“如何刷新我自己的物化视图”,它说“你可以完全刷新或快速刷新”,但我不明白这些解决方案的含义,所以我的问题很简单;

MV中的完全刷新和快速刷新有什么区别?

P.S:如果我的主表有 100 万行或更多行,我应该选择哪一个? (快速或完整)

感谢您的回复。

【问题讨论】:

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

标签: oracle rdbms materialized-views


【解决方案1】:

视情况而定,因此如果可能,请尝试两者并针对您的应用进行测量。作为一般规则,如果只有一小部分数据发生了变化,那么快速刷新可能会快得多。如果所有数据都发生了变化,则完全刷新会更好。

通过快速刷新,Oracle 会跟踪基表的更改,并在刷新时将更改应用到物化视图。另一方面,完全刷新会从头开始重建物化视图。数百万行的成本很高,但如果不了解您的应用程序的更多信息,就不可能选择最佳选项。

【讨论】:

    【解决方案2】:

    “完全刷新”意味着您截断整个物化视图并插入新数据。

    “快速刷新”意味着您只更新(或插入/删除)主表上已更改的行。

    正如信息“强制刷新”的意思,Oracle 尝试进行快速刷新,如果这不可能,则执行“完全刷新”

    通常快速刷新比完全刷新快得多,但它有一些限制。您必须在主表上定义 MATERIALIZED VIEW LOG

    这是一个完整的限制列表General Restrictions on Fast Refresh,有很多。

    【讨论】:

    • 感谢您的回复!我明白了:)
    • 如果我们只调用DBMS_MVIEW.REFRESH('m_view_name' ); 运行哪一个?
    • 这取决于 MView 是如何创建的。刷新时不能设置。
    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 2013-12-04
    • 2014-02-19
    • 2020-09-23
    • 2018-09-09
    • 2010-11-26
    • 2020-03-13
    • 2016-12-11
    相关资源
    最近更新 更多