轉:物化檢視(Materialized View)介紹
實體化試圖(Materialized View)介紹
實體化檢視概述
Oracle的實體化檢視提供了強大的功能,可以用在不同的環境中。在不同的環境中,實體化檢視的作用也不相同。資料倉儲中的實體化檢視主要用於預先計算並儲存表連線或聚集等耗時較多的操作的結果,這樣,在執行查詢時,就可以避免進行這些耗時的操作,而從快速的得到結果。在資料倉儲中,還經常使用查詢重寫(query rewrite)機制,這樣不需要修改原有的查詢語句,Oracle會自動選擇合適的實體化檢視進行查詢,完全對應用透明。實體化檢視和表一樣可以直接進行查詢。實體化檢視可以基於分割槽表,實體化檢視本身也可以分割槽。除了在資料倉儲中使用,實體化檢視還用於複製、移動計算等方面。實體化檢視有很多方面和索引很相似:使用實體化檢視的目的是為了提高查詢效能;實體化檢視對應用透明,增加和刪除實體化檢視不會影響應用程式中SQL語句的正確性和有效性;實體化檢視需要佔用儲存空間;當基表發生變化時,實體化檢視也應當重新整理。
建立實體化試圖主要選項說明
建立實體化檢視時可以指定多種選項,下面對幾種主要的選項進行簡單說明:
名稱 | ON PREBUILD TABLE |
描述 | 將已經存在的表註冊為實體化檢視。同時還必須提供描述建立該表的查詢的 SELECT 子句。可能無法始終保證查詢的精度與表的精度匹配。為了克服此問題,應該在規範中包含 WITH REDUCED PRECISION 子句。 |
名稱 | Build Clause | 建立方式 |
描述 | 包括BUILD IMMEDIATE和BUILD DEFERRED兩種 | |
取值 | BUILD IMMEDIATE | 在建立實體化檢視的時候就生成資料 |
BUILD DEFERRED | 在建立時不生成資料,以後根據需要在生成資料 | |
預設 | BUILD IMMEDIATE |
名稱 | Refresh | 重新整理子句 |
描述 | 當基表發生了DML操作後,實體化檢視何時採用哪種方式和基表進行同步 | |
語法 | [refresh [fast | complete | force] [on demand | commit] [start with date] [next date] [with {primary key | rowid}] ] | |
取值 | FAST | 採用增量重新整理,只重新整理自上次重新整理以後進行的修改 |
COMPLETE | 對整個實體化檢視進行完全的重新整理 | |
FORCE(預設) | Oracle在重新整理時會去判斷是否可以進行快速重新整理,如果可以則採用Fast方式,否則採用Complete的方式,Force選項是預設選項 | |
ON DEMAND(預設) | 實體化檢視在使用者需要的時候進行重新整理,可以手工透過DBMS_MVIEW.REFRESH等方法來進行重新整理,也可以透過JOB定時進行重新整理 | |
ON COMMIT | 實體化檢視在對基表的DML操作提交的同時進行重新整理 | |
START WITH | 第一次重新整理時間 | |
NEXT | 重新整理時間間隔 | |
WITH PRIMARY KEY(預設) |
生成主鍵實體化檢視,也就是說實體化檢視是基於表的主鍵,而不是ROWID(對應於ROWID子句)。 為了生成PRIMARY KEY子句,應該在表上定義主鍵,否則應該用基於ROWID的實體化檢視。主鍵實體化檢視允許識別實體化檢視表而不影響實體化檢視增量重新整理的可用性 | |
WITH ROWID | 只有一個單一的主表,不能包括下面任何一項: ●Distinct ●聚合函式 ●Group by ●子查詢 ●連線 ●SET操作 | |
名稱 | Query Rewrite | 查詢重寫 |
描述 | 包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE兩種。分別指出建立的實體化檢視是否支援查詢重寫。查詢重寫是指當對實體化檢視的基表進行查詢時,Oracle會自動判斷能否透過查詢實體化檢視來得到結果,如果可以,則避免了聚集或連線操作,而直接從已經計算好的實體化檢視中讀取資料 | |
取值 | ENABLE QUERY REWRITE | 支援查詢重寫 |
DISABLE QUERY REWRITE | 不支援查詢重寫 | |
預設 | DISABLE QUERY REWRITE |
建立實體化試圖日誌主要選項說明
如果需要進行快速重新整理,則需要建立實體化檢視日誌。實體化檢視日誌根據不同實體化檢視的快速重新整理的需要,可以建立為ROWID或PRIMARY KEY型別的。還可以選擇是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
名稱 | WITH Clause | |
描述 | ||
取值 | OBJECT ID | 如果是物件實體化檢視(object materialized view),則只能採用該方式 |
PRIMARY KEY | ||
ROWID | ||
SEQUENCE | ||
預設 |
實體化試圖舉例
建立實體化檢視時應先建立儲存的日誌空間
- create materialized view log on table1
- tablespace ts_data --日誌儲存在特定的表空間
- with rowid;
然後建立實體化檢視
- create materialized view mv_table1
- on prebuild table --將實體化檢視建立在一個已經存在的表上
- tablespace ts_data --儲存表空間
- build deferred --延遲重新整理不立即重新整理
- refresh force --如果可以快速重新整理則進行快速重新整理,否則完全重新整理
- on demand --按照指定方式重新整理
- as select * from table1;
刪除實體化檢視日誌
- drop materialized view log on table1;
刪除實體化檢視
- drop materialized view mv_table1;
-----------------------------------------------------------
Tips:
A materialized view provides indirect access to table data by storing the results of a query in a separate schema object. Unlike an ordinary view, which does not take up any storage space or contain any data, a materialized view contains the rows resulting from a query against one or more base tables or views. A materialized view can be stored in the same database as its base tables or in a different database.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-490532/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- materialized view (物化檢視)ZedView
- 建立物化檢視MV ( Materialized View )ZedView
- oracle10g materialized view物化檢視示例OracleZedView
- ogg 同步 物化檢視建立限制 Materialized ViewZedView
- oracle10g nested materialized view巢狀物化檢視示例OracleZedView巢狀
- zt_yangtinkung_ITPUB知識索引貼——物化檢視materialized view索引ZedView
- 物化檢視(Materialized View)的重新整理回滾約束ZedView
- 物化檢視(Materialized View)的重新整理回滾測試ZedView
- 物化檢視日誌(materialized view log)引起大量Dfs Lock Handle等待ZedView
- oracle10g partition分割槽表與物化檢視materialized viewOracleZedView
- ThinkPHP框架檢視詳細介紹View檢視–模板(九)PHP框架View
- SAP ABAP CDS view 檢視的 Replacement 技術介紹View
- MV (Materialed View) 物化檢視的重新整理組View
- Materialized ViewZedView
- [20121101]物化檢視與表(Materialized Views and Tables).txtZedView
- [20230225]12c Real-time materialized view 實時物化檢視的應用.txtZedView
- 物化檢視妙用__表同步使用物化檢視方法
- 【物化檢視】幾種物化檢視日誌分析
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- MySQL檢視介紹MySql
- ORACLE 檢視介紹Oracle
- oracle物化檢視Oracle
- drop materialized view hung !!!ZedView
- 物化檢視詳解
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- 物化檢視 on commitMIT
- 物化檢視日誌表被DROP後建立物化檢視報錯
- 建立Materialed View (物化檢視)時候報錯ORA-01723View
- materialized view 的總結ZedView
- about materialized view and long(turn)ZedView
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 物化檢視的快速重新整理測試與物化檢視日誌
- 普通檢視和物化檢視的區別
- calcite物化檢視詳解
- Oracle物化檢視詳解Oracle
- ORACLE物化檢視測試Oracle
- Oracle 物化檢視案例分享Oracle