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

oracle – 物化视图创建速度快但刷新需要数小时

发布时间:2021-01-16 10:30:09 所属栏目:站长百科 来源:网络整理
导读:我正在使用物化视图,我无法将其设置为快速刷新,因为某些表来自远程数据库,它没有物化视图日志. 当我创建物化视图时,花费了大约20 30秒.但是当我试图刷新它时. ?花了超过2个3小时.记录总数仅为460,000左右. 有没有人知道它会如何发生? 谢谢 代码如下所示 cre

我正在使用物化视图,我无法将其设置为快速刷新,因为某些表来自远程数据库,它没有物化视图日志.

当我创建物化视图时,花费了大约20 30秒.但是当我试图刷新它时.
?花了超过2个3小时.记录总数仅为460,000左右.

有没有人知道它会如何发生?

谢谢

代码如下所示

create materialized view MY_MV1
refresh force on demand
start with to_date('20-02-2013 22:00:00','dd-mm-yyyy hh24:mi:ss') next trunc(sysdate)+1+22/24 
as
( SELECT Nvl(Cr.Sol_Chng_Num,' ') AS Change_Request_Nbr,Nvl(Sr.Sr_Num,' ') AS Service_Request_Nbr,Nvl(Sr.w_Org_Id,0) AS Org_Id,Fcr.rowid,Cr.rowid,Bsr.rowid,Sr.rowid,SYSDATE
  FROM Dwadmin.f_S_Change@DateWarehouse.World Fcr
 INNER JOIN Dwadmin.d_S_Change@DateWarehouse.World Cr
    ON Fcr.w_Sol_Chng_Id = Cr.w_Sol_Chng_Id
 INNER JOIN Dwadmin.b_S_Change_Obl@DateWarehouse.World Bsr
    ON Fcr.w_Sol_Chng_Id = Bsr.w_Sol_Chng_Id
 INNER JOIN Dwadmin.d_S_Rec@DateWarehouse.World Sr
    ON Sr.w_Srv_Rec_Id = Bsr.w_Srv_Rec_Id
 WHERE Sr.Sr_Num <> 'NS'
);

我试过使用dbms_mview.refresh(‘MY_MATVIEW’,’C’,atomic_refresh => false)
但是它仍然需要141分钟才能运行… vs 159分钟没有atomic_refresh => false

解决方法

我个人不会使用内置于mat视图CREATE语句中的调度程序(以…开头的子句).

主要原因(对我而言)是你不能以这种方式声明刷新非ATOMIC(至少我在CREATE时没有找到这个的语法).根据您的刷新要求和大小,这可以节省大量时间.

我会使用dbms_mview.refresh(‘MY_MATVIEW’,atomic_refresh => false).这个会:

>截断MY_MATVIEW快照表
>在MY_MATVIEW表中插入附加内容

如果在create语句中使用next子句,它将设置一个原子刷新,这意味着它将:

>从MY_MATVIEW中删除*
>插入MY_MATVIEW
>承诺

这将更慢(有时慢得多),但其他人仍然可以在刷新过程中从MY_MATVIEW查询.所以,取决于你的情况和需求.

(编辑:核心网)

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

    热点阅读