普通视图和物化视图区别
物化視圖是一種特殊的物理表,“物化”(Materialized)視圖是相對(duì)普通視圖而言的。普通視圖是虛擬表,應(yīng)用的局限性大,任何對(duì)視圖的查詢(xún),Oracle都實(shí)際上轉(zhuǎn)換為視圖SQL語(yǔ)句的查詢(xún)。這樣對(duì)整體查詢(xún)性能的提高,并沒(méi)有實(shí)質(zhì)上的好處。
1、物化視圖的類(lèi)型:ON DEMAND、ON COMMIT
二 者的區(qū)別在于刷新方法的不同,ON DEMAND顧名思義,僅在該物化視圖“需要”被刷新了,才進(jìn)行刷新(REFRESH),即更新物化視圖,以保證和基表數(shù)據(jù)的一致性;而ON COMMIT是說(shuō),一旦基表有了COMMIT,即事務(wù)提交,則立刻刷新,立刻更新物化視圖,使得數(shù)據(jù)和基表一致。
2、ON DEMAND物化視圖
物化視圖的創(chuàng)建本身是很復(fù)雜和需要優(yōu)化參數(shù)設(shè)置的,特別是針對(duì)大型生產(chǎn)數(shù)據(jù)庫(kù)系統(tǒng)而言。但Oracle允許以這種最簡(jiǎn)單的,類(lèi)似于普通視圖的方式來(lái)做,所以不可避免的會(huì)涉及到默認(rèn)值問(wèn)題。也就是說(shuō)Oracle給物化視圖的重要定義參數(shù)的默認(rèn)值處理是我們需要特別注意的。
物化視圖的特點(diǎn):
(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é)果,可以得到佐證;
創(chuàng)建語(yǔ)句:create materialized view mv_name as select * from table_name
默認(rèn)情況下,如果沒(méi)指定刷新方法和刷新模式,則Oracle默認(rèn)為FORCE和DEMAND。
物化視圖的數(shù)據(jù)怎么隨著基表而更新?
Oracle 提供了兩種方式,手工刷新和自動(dòng)刷新,默認(rèn)為手工刷新。也就是說(shuō),通過(guò)我們手工的執(zhí)行某個(gè)Oracle提供的系統(tǒng)級(jí)存儲(chǔ)過(guò)程或包,來(lái)保證物化視圖與基表數(shù) 據(jù)一致性。這是最基本的刷新辦法了。自動(dòng)刷新,其實(shí)也就是Oracle會(huì)建立一個(gè)job,通過(guò)這個(gè)job來(lái)調(diào)用相同的存儲(chǔ)過(guò)程或包,加以實(shí)現(xiàn)。
ON DEMAND物化視圖的特性及其和ON COMMIT物化視圖的區(qū)別,即前者不刷新(手工或自動(dòng))就不更新物化視圖,而后者不刷新也會(huì)更新物化視圖,——只要基表發(fā)生了COMMIT。
3、ON COMMIT物化視圖
ON COMMIT物化視圖的創(chuàng)建,和上面創(chuàng)建ON DEMAND的物化視圖區(qū)別不大。因?yàn)镺N DEMAND是默認(rèn)的,所以O(shè)N COMMIT物化視圖,需要再增加個(gè)參數(shù)即可。
需要注意的是,無(wú)法在定義時(shí)僅指定ON COMMIT,還得附帶個(gè)參數(shù)才行。
創(chuàng)建ON COMMIT物化視圖:create materialized view mv_name refresh force on commit as select * from table_name
一:物化視圖:在查詢(xún)時(shí)直接讀出物化視圖中的數(shù)據(jù)。
??? 普通視圖:在查詢(xún)時(shí)需要在查詢(xún)中嵌套個(gè)子查詢(xún)?nèi)缓笕ピL問(wèn)原表。
二:物化視圖:不可以更新,刪除,修改等操作,只能夠查詢(xún)。然后他分為ON DEMAND物化視圖和ON DEMAND物化視圖
??? ON DEMAND物化視圖:需要手動(dòng)更新數(shù)據(jù),這樣才能保證它和原表的數(shù)據(jù)一致。
??? ON DEMAND物化視圖:一旦原表中有數(shù)據(jù)commit馬上更新數(shù)據(jù)。
??? 普通視圖:可以更新,刪除,修改等操作,但是這些操作將直接反應(yīng)在原表中。
總結(jié)
以上是生活随笔為你收集整理的普通视图和物化视图区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 天下之至柔驰骋天下之至坚体现矛盾双方相互
- 下一篇: Hashtable与Dictionary