程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle物化視圖,oracle物化

oracle物化視圖,oracle物化

編輯:Oracle教程

oracle物化視圖,oracle物化


物化視圖是一種特殊的物理表,“物化”(Materialized)視圖是相對普通視圖而言的。普通視圖是虛擬表,應用的局限性大,任何對視圖的查詢,Oracle都實際上轉換為視圖SQL語句的查詢。

這樣對整體查詢性能的提高,並沒有實質上的好處。

 

物化視圖的類型:ON DEMAND、ON COMMIT

    二者的區別在於刷新方法的不同,ON DEMAND顧名思義,僅在該物化視圖“需要”被刷新了,才進行刷新(REFRESH),即更新物化視圖,以保證和基表數據的一致性;

 而ON COMMIT是說,一旦基表有了COMMIT,即事務提交,則立刻刷新,立刻更新物化視圖,使得數據和基表一致。

  ON DEMAND物化視圖的特性及其和ON COMMIT物化視圖的區別,即前者不刷新(手工或自動)就不更新物化視圖,而後者不刷新也會更新物化視圖,——只要基表發生了COMMIT。

ON COMMIT物化視圖的創建,和上面創建ON DEMAND的物化視圖區別不大。因為ON DEMAND是默認的,所以ON COMMIT物化視圖,需要再增加個參數即可。   需要注意的是,無法在定義時僅指定ON COMMIT,還得附帶個參數才行。

     創建ON COMMIT物化視圖:create materialized view mv_name refresh force on commit as select * from table_name    備注:實際創建過程中,基表需要有主鍵約束,否則會報錯(ORA-12014)

 

  刷新的方法有四種:FAST、COMPLETE、FORCE和NEVER。我們工作中用到的基本上都是FORCE。FAST刷新采用增量刷新,只刷新自上次刷新以後進行的修改。COMPLETE刷新對整個物化視圖進行完全的刷新。如果選擇FORCE方式,則Oracle在刷新時會去判斷是否可以進行快速刷新,如果可以則采用FAST方式,否則采用COMPLETE的方式。NEVER指物化視圖不進行任何刷新。

      對於已經創建好的物化視圖,可以修改其刷新方式,比如把物化視圖mv_name的刷新方式修改為每天晚上10點刷新一次:alter materialized view mv_name refresh force on demand start with sysdate next to_date(concat(to_char(sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss') 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved