oracle refresh force,千万级表上的物化视图(force模式 ),手动刷新,为何速度奇慢?...
有一千萬級數(shù)據(jù)表,先建立其物化視圖log, 然后采用refresh force模式建立物化視圖
在該千萬級數(shù)據(jù)表未作任何變化時,手動dbms_mview.refresh(),速度奇慢!! 難道這里是complete refresh???
具體細(xì)節(jié)如下:
1) 該千萬級表結(jié)構(gòu)如下
CREATE TABLE MsgAssgnmnt (
MsgID INTEGER NOT NULL,
TimeFrom TIMESTAMP NOT NULL,
AssgnmntTypeCode SMALLINT NOT NULL,
RequestID INTEGER NOT NULL,
TimeTo TIMESTAMP NOT NULL,
QueueID SMALLINT NOT NULL,
AgentID SMALLINT NULL,
SegmentID SMALLINT NOT NULL,
ReasonCode NVARCHAR2(3) NOT NULL,
UpdateUserID SMALLINT NULL,
AssgnmntComment NVARCHAR2(254) NULL,
CONSTRAINT XPKMsgAssgnmnt
PRIMARY KEY (MsgID, TimeFrom, AssgnmntTypeCode)
)
2) 建立物化視圖日志:
create materialized view log on MSGASSGNMNT with rowid;
3) 建立物化視圖:
create materialized view MV_MSGASSGNMNT
tablespace BWTABSPACE4
build immediate
refresh force
on demand
as
SELECT TO_CHAR(TimeFrom,YYYYMMDDHH24MISS)
||TO_CHAR(TimeTo,YYYYMMDDHH24MISS) AS concatFromAndTo,
SegmentID, TimeFrom, AssgnmntTypeCode, AgentID, QueueID,
UpdateUserID, ReasonCode, RequestID, TimeTo FROM MsgAssgnmnt;
4) 在物化視圖上建立索引
CREATE INDEX XIF201MV_MsgAssgnmnt ON MV_MSGASSGNMNT
( QueueID ASC) TABLESPACE BWTABSPACE10 NOLOGGING;
CREATE INDEX XIF382MV_MsgAssgnmnt ON MV_MSGASSGNMNT
( RequestID ASC) TABLESPACE bwtabspace10 NOLOGGING;
CREATE INDEX XIF777MV_MsgAssgnmnt ON MV_MSGASSGNMNT
( AgentID ASC) TABLESPACE bwtabspace10 NOLOGGING;
CREATE INDEX XSK1MV_MsgAssgnmnt ON MV_MSGASSGNMNT
( TimeFrom ASC) TABLESPACE bwtabspace10 NOLOGGING;
CREATE INDEX XIE1MV_MsgAssgnmnt ON MV_MSGASSGNMNT
( TimeTo ASC) TABLESPACE bwtabspace10 NOLOGGING;
CREATE INDEX XIE2MV_MsgAssgnmnt ON MV_MSGASSGNMNT
( concatFromAndTo ASC) TABLESPACE bwtabspace10 NOLOGGING;
5) 以上步驟都成功后,千萬級母表msgassgnmnt沒有做任何的DML操作,此時手動執(zhí)行:
exec dbms_mview.refresh(MV_MSGASSGNMNT);
該步驟消耗2個小時,比建立物化視圖的時間還要長
是不是我這里是一個complete refresh???
總結(jié)
以上是生活随笔為你收集整理的oracle refresh force,千万级表上的物化视图(force模式 ),手动刷新,为何速度奇慢?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 下进入oracle,linu
- 下一篇: matlab缩小矩阵尺寸,Matlab中