gpt4 book ai didi

oracle - 物化 View 创建速度很快,但刷新需要几个小时

转载 作者:行者123 更新时间:2023-12-04 19:11:03 25 4
gpt4 key购买 nike

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

当我创建物化 View 时,花了大约 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 分钟才能运行......与没有 atomic_refresh=>false 的 159 分钟相比

最佳答案

我个人不会使用内置在 mat view CREATE 语句中的调度程序(以 ... next 子句开头)。

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

我会使用 dbms_mview.refresh('MY_MATVIEW', 'C', atomic_refresh=>false )。这个会:

  • 截断 MY_MATVIEW 快照表
  • 插入追加到 MY_MATVIEW 表

  • 如果在 create 语句中使用 next 子句,它将设置原子刷新,这意味着它将:
  • 从 MY_MATVIEW
  • 中删除 *
  • 插入 MY_MATVIEW
  • 提交

  • 这会更慢(有时会慢得多),但其他人仍然可以在刷新时从 MY_MATVIEW 查询。所以,看你的情况和需求。

    关于oracle - 物化 View 创建速度很快,但刷新需要几个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983941/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com