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

Oracle物化視圖:創建最簡單物化視圖

編輯:關於Oracle數據庫

  物化視圖是一種特殊的物理表,“物化”(Materialized)視圖是相對普通視圖而言的。普通視圖是虛擬表,應用的局限性大,任何對視圖的查詢,Oracle都實際上轉換為視圖SQL語句的查詢。這樣對整體查詢性能的提高,並沒有實質上的好處。

  Oracle最早在OLAP系統中引入了物化視圖的概念。但後來很多大型OLTP系統中,發現類似統計的查詢是無可避免,而這些查詢操作如果很頻繁,對整體數據庫性能是很致命的。於是Oracle開始不斷的改進物化視圖,使得其也開始合適OLTP系統。從Oracle 8i到現在,功能已經相對比較完備了。

  本文是Oracle物化視圖系列文章的第一篇,有兩個主要目的,來體驗一下創建ON DEMAND和ON COMMIT物化視圖的方法。ON DEMAND和ON COMMIT物化視圖的區別在於其刷新方法的不同,ON DEMAND顧名思義,僅在該物化視圖“需要”被刷新了,才進行刷新(REFRESH),即更新物化視圖,以保證和基表數據的一致性;而ON COMMIT是說,一旦基表有了COMMIT,即事務提交,則立刻刷新,立刻更新物化視圖,使得數據和基表一致。

  1、第一個ON DEMAND物化視圖

  1.1、創建ON DEMAND物化視圖

  下面創建一個最簡單的物化視圖,這個物化視圖的定義很類似於普通視圖的創建語句,只是多了一個materialized,但就是這個單詞,造成了物化視圖和普通視圖(虛擬表)的天壤之別,也引申出後面很多的事情,呵呵。

  本例中需要特別注意的是,Oracle給物化視圖的重要定義參數的默認值處理,在下面的例子中會有特別說明。因為物化視圖的創建本身是很復雜和需要優化參數設置的,特別是針對大型生產數據庫系統而言。但Oracle允許以這種最簡單的,類似於普通視圖的辦法來做,所以不可避免的會涉及到默認值問題。

  像我們這樣,創建物化視圖時未作指定,則Oracle按ON DEMAND模式來創建。

  從下例中可以看出:

  1) 物化視圖在某種意義上說就是一個物理表(而且不僅僅是一個物理表),這通過其可以被user_tables查詢出來,而得到佐證;

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

  3) 物化視圖會占用數據庫磁盤空間,這點從user_segment的查詢結果,可以得到佐證。

  創建物化視圖

  --獲取數據庫rdbms版本信息  

   SQL>select*fromv$version;
  BANNER
  --------------------------------------------------------------------------------
  OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-Production
  PL/SQLRelease11.1.0.6.0-Production
  CORE11.1.0.6.0Production
  TNSfor32-bitWindows:Version11.1.0.6.0-Production
  NLSRTLVersion11.1.0.6.0–Production

  --創建物化視圖  

   SQL>creatematerializedviewmv_testcf
  2as
  3select*fromxiaotg.testcf;
  Materializedviewcreated

  --分析物化視圖,以獲得統計信息 

   SQL>analyzetablexiaotg.mv_testcfcomputestatistics;
  Tableanalyzed

  --查看物化視圖的行數,發現和master表(TESTCF)一樣  

   SQL>selecttl.table_name,tl.num_rowsfromuser_tablestlwheretl.table_namein('TESTCF','MV_TESTCF');
  TABLE_NAMENUM_ROWS
  ----------------------------------------
  MV_TESTCF80000
  TESTCF80000

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一頁
  • 尾頁
  • 共5頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved