加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle – 使用DBMS_MVIEW.REFRESH刷新’REFRESH FORCE ON DEMAN

发布时间:2021-02-23 19:16:10 所属栏目:百科 来源:网络整理
导读:我有以下物化视图 – CREATE MATERIALIZED VIEW TESTRESULT ON PREBUILT TABLE WITH REDUCED PRECISIONREFRESH FORCE ON DEMANDWITH PRIMARY KEYAS SELECT...FROM...WHERE... 此物化视图没有支持MATERIALIZED VIEW LOG.如上面的子句所示,这个MV有“ON DEMA

我有以下物化视图 –

CREATE MATERIALIZED VIEW TESTRESULT 
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS 
SELECT...
FROM...
WHERE...

此物化视图没有支持MATERIALIZED VIEW LOG.如上面的子句所示,这个MV有“ON DEMAND”指定,并根据Oracle文档,

“[ON DEMAND] indicate[s] that the materialized
view will be refreshed on demand by
calling one of the three DBMS_MVIEW
refresh procedures.”

当我调用DBMS_MVIEW.REFRESH(‘TESTRESULT’)时,发生了什么?它是否手动检查每条记录以查看它是否已更新?

Oracle版本:10g

解决方法

默认情况下(并且此默认值在不同版本的Oracle中更改),将在物化视图上执行完整的原子刷新.这意味着将删除物化视图中的数据,将重新执行基础查询,并将结果加载到物化视图中.您可以通过为ATOMIC_REFRESH参数传入值FALSE来提高刷新效率,即

dbms_mview.refresh( 'TESTRESULT',atomic_refresh => false );

这将导致物化视图被截断,查询重新执行,并且结果通过直接路径插入插入到物化视图中.这将比原子刷新更有效,但物化视图在刷新期间将为空.

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读