新聞中心
視圖是一個(gè)虛擬表(也可以認(rèn)為是一條語句),基于它創(chuàng)建時(shí)指定的查詢語句返回的結(jié)果集。每次訪問它都會(huì)導(dǎo)致這個(gè)查詢語句被執(zhí)行一次。為了避免每次訪問都執(zhí)行這個(gè)查詢,可以將這個(gè)查詢結(jié)果集存儲(chǔ)到一個(gè)物化視圖(也叫實(shí)體化視圖)。

目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、宜興網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
物化視圖與普通的視圖相比的區(qū)別是物化視圖是建立的副本,它類似于一張表,需要占用存儲(chǔ)空間。而對(duì)一個(gè)物化視圖查詢的執(zhí)行效率與查詢一個(gè)表是一樣的。
Material View的主要作用
\1. 實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫之間的數(shù)據(jù)同步,可以存在時(shí)間差。
\2. 如果是遠(yuǎn)程鏈接數(shù)據(jù)庫的場(chǎng)景時(shí),提高查詢速度。
(由于查詢邏輯復(fù)雜,數(shù)據(jù)量比較大,導(dǎo)致每次查詢視圖的時(shí)候,查詢速度慢,效率低下)
物化視圖的刷新方式和方法
\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ù)庫建立mview log日志文件
create materialized view log on w_1 ;
—-注:(TEST為表名或者視圖名,關(guān)于視圖上建立物化視圖,見基于視圖的物化視圖
—-創(chuàng)建物化視圖語句:
(2).在統(tǒng)計(jì)數(shù)據(jù)建立materializad view 語法
Create materialized view MV_TEST
—-MVTEST為物化視圖名
Build immediate
—-創(chuàng)建時(shí)生成數(shù)據(jù)對(duì)應(yīng)的是build deferred
Refresh fast
—-增量刷新
On commit
—-在基表有更新時(shí)提交,這里該句對(duì)視圖無效
With rowid
—-這里創(chuàng)建基于rowid的物化視圖,對(duì)應(yīng)的是 primary key
As
Select * from TEST;
—-生成物化視圖數(shù)據(jù)語句
或者
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是說,一旦基表有了COMMIT,即事務(wù)提交,則立刻刷新,立刻更新物化視圖,使得數(shù)據(jù)和基表一致。物化視圖是物理表的么?1) 物化視圖在某種意義上說就是一個(gè)物理表(但并不僅僅是一個(gè)物理表),這通過其可以被user_tables查詢出來,而得到佐證;
2) 物化視圖也是一種段(segment),所以其有自己的物理存儲(chǔ)屬性;
3) 物化視圖會(huì)占用數(shù)據(jù)庫磁盤空間,這點(diǎn)從user_segment的查詢結(jié)果,可以得到佐證。
查詢物化視圖上次刷新時(shí)間
SELECT last_refresh_date
FROM user_mviews
WHERE mview_name = 'MV_TABLENAME';
當(dāng)前文章:Oracle物化視圖的創(chuàng)建與使用
URL標(biāo)題:http://www.dlmjj.cn/article/cdsjedp.html


咨詢
建站咨詢
