溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Oracle物化視圖怎么用

發(fā)布時(shí)間:2021-11-11 14:05:25 來(lái)源:億速云 閱讀:118 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章主要介紹了Oracle物化視圖怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Oracle物化視圖的用法與總結(jié)

物化視圖(material view)是什么?

物化視圖是包括一個(gè)查詢(xún)結(jié)果的數(shù)據(jù)庫(kù)對(duì)象,它是遠(yuǎn)程數(shù)據(jù)的的本地副本,或者用來(lái)生成基于數(shù)據(jù)表求和的匯總表。

物化視圖存儲(chǔ)基于遠(yuǎn)程表的數(shù)據(jù),也可以稱(chēng)為快照(類(lèi)似于MSSQL Server中的snapshot,靜態(tài)快照)。對(duì)于復(fù)制,物化視圖允許你在本地維護(hù)遠(yuǎn)程數(shù)據(jù)的副本,這些副本是只讀的。

如果你想修改本地副本,必須用高級(jí)復(fù)制的功能。當(dāng)你想從一個(gè)表或視圖中抽取數(shù)據(jù)時(shí),你可以用從物化視圖中抽取。

對(duì)于數(shù)據(jù)倉(cāng)庫(kù),創(chuàng)建的物化視圖通常情況下是聚合視圖,單一表聚合視圖和連接視圖。(這個(gè)是基于本地的基表或者視圖的聚合)。

物化視圖,說(shuō)白了,就是物理表,只不過(guò)這張表通過(guò)oracle的內(nèi)部機(jī)制可以定期更新,將一些大的耗時(shí)的表連接用物化視圖實(shí)現(xiàn),會(huì)提高查詢(xún)的效率。當(dāng)然要打開(kāi)查詢(xún)重寫(xiě)選項(xiàng);

Material View的主要作用

1. 實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步,可以存在時(shí)間差。

2. 如果是遠(yuǎn)程鏈接數(shù)據(jù)庫(kù)的場(chǎng)景時(shí),提高查詢(xún)速度。

(由于查詢(xún)邏輯復(fù)雜,數(shù)據(jù)量比較大,導(dǎo)致每次查詢(xún)視圖的時(shí)候,查詢(xún)速度慢,效率低下)

物化視圖的刷新方式和方法

1. 刷新的方式

Fast

Complete

Fource

2. 刷新的方法

DBMS_REFRESH.Refresh

DBMS_MVIEW.Refresh

EXEC DBMS_MVIEW.refresh('BXJ_OBJECTS_MV_T1','C');
EXEC DBMS_REFRESH.refresh('REP_MVIEWGROUP');  物化視圖的刷新方式和方法  (1).在源數(shù)據(jù)庫(kù)建立mview log日志文件

        create materialized view log on w_1 ;

----注:(TEST為表名或者視圖名,關(guān)于視圖上建立物化視圖,見(jiàn)基于視圖的物化視圖

----創(chuàng)建物化視圖語(yǔ)句:

    (2).在統(tǒng)計(jì)數(shù)據(jù)建立materializad view  語(yǔ)法    

Create materialized view MV_TEST

----MVTEST為物化視圖名

Build immediate

----創(chuàng)建時(shí)生成數(shù)據(jù)對(duì)應(yīng)的是build deferred

Refresh fast

----增量刷新

On commit

----在基表有更新時(shí)提交,這里該句對(duì)視圖無(wú)效

With rowid

----這里創(chuàng)建基于rowid的物化視圖,對(duì)應(yīng)的是 primary key

As

Select * from TEST;

----生成物化視圖數(shù)據(jù)語(yǔ)句

或者

    CREATE MATERIALIZED VIEW MV_TableName
        BUILD IMMEDIATE      --創(chuàng)建時(shí)立即刷新
         REFRESH FORCE        --如果可以快速刷新則進(jìn)行快速刷新,否則完全刷新
         ON DEMAND            --刷新方式
         START WITH SYSDATE   --第一次刷新時(shí)間
         NEXT  SYSDATE+1/12   --刷新時(shí)間間隔
         AS SELECT 1 id ‘A’ name FROM dual;

    (3).調(diào)用時(shí)進(jìn)行刷新

        dbms_refresh.refresh('W_1')

創(chuàng)建物化視圖 CREATE MATERIALIZED VIEW bxj_objects_mv_t1 REFRESH FAST AS SELECT * FROM apps.bxj_objects_t1;
CREATE MATERIALIZED VIEW bxj_objects_mv_t2 REFRESH FORCE AS SELECT * FROM bxj_objects_t2;
CREATE MATERIALIZED VIEW bxj_objects_mv_t3 REFRESH COMPLETE AS SELECT * FROM bxj_objects_t3; ON DEMAND和ON COMMIT物化視圖的區(qū)別 ON DEMAND和ON COMMIT物化視圖的區(qū)別在于其刷新方法的不同,

ON DEMAND顧名思義,僅在該物化視圖“需要”被刷新了,才進(jìn)行刷新(REFRESH),即更新物化視圖,以保證和基表數(shù)據(jù)的一致性;

而ON COMMIT是說(shuō),一旦基表有了COMMIT,即事務(wù)提交,則立刻刷新,立刻更新物化視圖,使得數(shù)據(jù)和基表一致。 物化視圖是物理表的么? 1) 物化視圖在某種意義上說(shuō)就是一個(gè)物理表(但并不僅僅是一個(gè)物理表),這通過(guò)其可以被user_tables查詢(xún)出來(lái),而得到佐證;

2) 物化視圖也是一種段(segment),所以其有自己的物理存儲(chǔ)屬性;

3) 物化視圖會(huì)占用數(shù)據(jù)庫(kù)磁盤(pán)空間,這點(diǎn)從user_segment的查詢(xún)結(jié)果,可以得到佐證。

查詢(xún)物化視圖上次刷新時(shí)間

SELECT last_refresh_date 
     FROM user_mviews 
    WHERE mview_name = 'MV_TABLENAME';

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Oracle物化視圖怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI