物化檢視梳理總結
--物化檢視可以分為三種型別:
* 包含聚集的物化檢視
* 只包含連線的物化檢視
* 巢狀物化檢視
三種物化檢視的快速重新整理的限制條件有很大區別,而對於其他方面則區別不大。
--物化檢視建立方式(Build Methods),包括BUILD IMMEDIATE和BUILD DEFERRED兩種。
* BUILD IMMEDIATE是在建立物化檢視的時候就生成資料,
* BUILD DEFERRED則在建立時不生成資料,以後根據需要在生成資料。
預設為BUILD IMMEDIATE。
--物化檢視查詢重寫(Query Rewrite),包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE兩種。
分別指出建立的物化檢視是否支援查詢重寫。
查詢重寫是指當對物化檢視的基表進行查詢時,Oracle會自動判斷能否透過查詢物化視
圖來得到結果,如果可以,則避免了聚集或連線操作,而直接從已經計算好的物化檢視
中讀取資料。預設為DISABLE QUERY REWRITE。
在建立物化檢視的時候可以指定ORDER BY語句,使生成的資料按照一定的順序進行儲存。不
過這個語句不會寫入物化檢視的定義中,而且對以後的重新整理也無效。
--物化檢視資料的重新整理模式:
僅在該物化檢視“需要”被重新整理了,才進行重新整理(REFRESH),即更新物化檢視,
以保證和基表資料的一致性;
基表有了COMMIT,即事務提交,則立刻重新整理,立刻更新物化檢視,使得資料
和基表一致
二者的區別在於重新整理方法的不同。
--重新整理的方法有四種:FAST、COMPLETE、FORCE和NEVER。
FAST重新整理採用增量重新整理,只重新整理自上次重新整理以後進行的修改。
COMPLETE重新整理對整個物化檢視進行完全的重新整理。
如果選擇FORCE方式,則Oracle在重新整理時會去判斷是否可以進行快速重新整理,如果可以則採用FAST方式,否則採用COMPLETE的方式。
NEVER指物化檢視不進行任何重新整理。
--物化檢視日誌
如果需要進行'快速重新整理',則需要建立物化檢視日誌。
物化檢視日誌根據不同物化檢視的快速重新整理的需要,可以建立為ROWID或PRIMARY KEY型別的。
還可以選擇是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
可以指明ON PREBUILD TABLE語句將物化檢視建立在一個已經存在的表上。這種情況下,物化
檢視和表必須同名。當刪除物化檢視時,不會刪除同名的表。這種物化檢視的查詢重寫要求參
數QUERY_REWRITE_INTEGERITY必須設定為trusted或者stale_tolerated。
--物化檢視分割槽
基於分割槽的物化檢視可以支援分割槽變化跟蹤(PCT)。具有這種特性的物化檢視,當基表進行了分
區維護操作後,仍然可以進行快速重新整理操作。對於聚集物化檢視,可以在GROUP BY列表中使用
CUBE或ROLLUP,來建立不同等級的聚集物化檢視。
--物化檢視的手工重新整理:
重新整理指定的物化檢視
execute dbms_mview.refresh('MV_TEST');
重新整理利用了該表的所有物化檢視
execute dbms_mview.refresh_defresh_dependent('TEST');
重新整理該模式中,自上次重新整理以來,未得到重新整理的所有物化檢視
execute dbms_mview.refresh_all_mviews;
--物化檢視的特點:
* 物化檢視在某種意義上說就是一個物理表(而且不僅僅是一個物理表);
* 物化檢視也是一種段(segment),所以其有自己的物理儲存屬性;
* 物化檢視會佔用資料庫磁碟空間;
--設定init.ora的引數:
使用物化檢視:
JOB_QUEUE_PROCESSES,必須設定大於 1。
QUERY_REWRITE_ENABLED,設定為TRUE時,允許動態重寫查詢。
QUERY_REWRITE_INTEGRITY,確定訪問物化檢視時資料一致性要遵守的程度。
OPTIMIZER_MODE,必須設定成CBO的某種方式。
禁用物化檢視:
修改init.ora引數的query_rewrite_enabled引數設定成flase,重啟例項。
使用alter system set query_rewrite_enabled = flase;動態修改。
使用alter session set query_rewrite_enabled = flash;修改會話內。
使用 norewrite提示。
--------------------------------------------------------------------------------------
源宿主:y,目標宿主:m
1、源表
create table y.test(id varchar2(10) primary key ,name varchar2(20));
2、物化檢視日誌
建立:
create materialized view log on y.test [tablespace MV_DATA WITH ROWID, sequence(seq_tid)];
刪除:
drop materialized view log on test;
2、物化檢視
建立:
CREATE MATERIALIZED VIEW m.mv_test [tablespace mview_data]
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND --重新整理模式,預設值,可以不寫
START WITH SYSDATE
NEXT SYSDATE+2/1444
WITH PRIMARY KEY
DISABLE QUERY REWRITE --查詢重寫,預設值,可以不寫
AS
SELECT * FROM y.test;
刪除:
drop materialized view m.mv_test;
* 包含聚集的物化檢視
* 只包含連線的物化檢視
* 巢狀物化檢視
三種物化檢視的快速重新整理的限制條件有很大區別,而對於其他方面則區別不大。
--物化檢視建立方式(Build Methods),包括BUILD IMMEDIATE和BUILD DEFERRED兩種。
* BUILD IMMEDIATE是在建立物化檢視的時候就生成資料,
* BUILD DEFERRED則在建立時不生成資料,以後根據需要在生成資料。
預設為BUILD IMMEDIATE。
--物化檢視查詢重寫(Query Rewrite),包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE兩種。
分別指出建立的物化檢視是否支援查詢重寫。
查詢重寫是指當對物化檢視的基表進行查詢時,Oracle會自動判斷能否透過查詢物化視
圖來得到結果,如果可以,則避免了聚集或連線操作,而直接從已經計算好的物化檢視
中讀取資料。預設為DISABLE QUERY REWRITE。
在建立物化檢視的時候可以指定ORDER BY語句,使生成的資料按照一定的順序進行儲存。不
過這個語句不會寫入物化檢視的定義中,而且對以後的重新整理也無效。
--物化檢視資料的重新整理模式:
以保證和基表資料的一致性;
和基表一致
二者的區別在於重新整理方法的不同。
--重新整理的方法有四種:FAST、COMPLETE、FORCE和NEVER。
FAST重新整理採用增量重新整理,只重新整理自上次重新整理以後進行的修改。
COMPLETE重新整理對整個物化檢視進行完全的重新整理。
如果選擇FORCE方式,則Oracle在重新整理時會去判斷是否可以進行快速重新整理,如果可以則採用FAST方式,否則採用COMPLETE的方式。
NEVER指物化檢視不進行任何重新整理。
--物化檢視日誌
如果需要進行'快速重新整理',則需要建立物化檢視日誌。
物化檢視日誌根據不同物化檢視的快速重新整理的需要,可以建立為ROWID或PRIMARY KEY型別的。
還可以選擇是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
可以指明ON PREBUILD TABLE語句將物化檢視建立在一個已經存在的表上。這種情況下,物化
檢視和表必須同名。當刪除物化檢視時,不會刪除同名的表。這種物化檢視的查詢重寫要求參
數QUERY_REWRITE_INTEGERITY必須設定為trusted或者stale_tolerated。
--物化檢視分割槽
基於分割槽的物化檢視可以支援分割槽變化跟蹤(PCT)。具有這種特性的物化檢視,當基表進行了分
區維護操作後,仍然可以進行快速重新整理操作。對於聚集物化檢視,可以在GROUP BY列表中使用
CUBE或ROLLUP,來建立不同等級的聚集物化檢視。
--物化檢視的手工重新整理:
重新整理指定的物化檢視
execute dbms_mview.refresh('MV_TEST');
重新整理利用了該表的所有物化檢視
execute dbms_mview.refresh_defresh_dependent('TEST');
重新整理該模式中,自上次重新整理以來,未得到重新整理的所有物化檢視
execute dbms_mview.refresh_all_mviews;
--物化檢視的特點:
* 物化檢視在某種意義上說就是一個物理表(而且不僅僅是一個物理表);
* 物化檢視也是一種段(segment),所以其有自己的物理儲存屬性;
* 物化檢視會佔用資料庫磁碟空間;
--設定init.ora的引數:
使用物化檢視:
JOB_QUEUE_PROCESSES,必須設定大於 1。
QUERY_REWRITE_ENABLED,設定為TRUE時,允許動態重寫查詢。
QUERY_REWRITE_INTEGRITY,確定訪問物化檢視時資料一致性要遵守的程度。
OPTIMIZER_MODE,必須設定成CBO的某種方式。
禁用物化檢視:
修改init.ora引數的query_rewrite_enabled引數設定成flase,重啟例項。
使用alter system set query_rewrite_enabled = flase;動態修改。
使用alter session set query_rewrite_enabled = flash;修改會話內。
使用 norewrite提示。
--------------------------------------------------------------------------------------
源宿主:y,目標宿主:m
1、源表
create table y.test(id varchar2(10) primary key ,name varchar2(20));
2、物化檢視日誌
建立:
create materialized view log on y.test [tablespace MV_DATA WITH ROWID, sequence(seq_tid)];
刪除:
drop materialized view log on test;
2、物化檢視
建立:
CREATE MATERIALIZED VIEW m.mv_test [tablespace mview_data]
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND --重新整理模式,預設值,可以不寫
START WITH SYSDATE
NEXT SYSDATE+2/1444
WITH PRIMARY KEY
DISABLE QUERY REWRITE --查詢重寫,預設值,可以不寫
AS
SELECT * FROM y.test;
刪除:
drop materialized view m.mv_test;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1349506/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE中的物化檢視(OCM複習總結)Oracle
- 物化檢視妙用__表同步使用物化檢視方法
- 【物化檢視】幾種物化檢視日誌分析
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- oracle物化檢視Oracle
- 物化檢視詳解
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- materialized view (物化檢視)ZedView
- 物化檢視 on commitMIT
- 物化檢視日誌表被DROP後建立物化檢視報錯
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 物化檢視的快速重新整理測試與物化檢視日誌
- 建議開發員少用帶錶連結的檢視(此檢視非物化檢視)
- 普通檢視和物化檢視的區別
- calcite物化檢視詳解
- Oracle物化檢視詳解Oracle
- ORACLE物化檢視測試Oracle
- Oracle 物化檢視案例分享Oracle
- ZT 物化檢視詳解
- Oracle物化檢視語法Oracle
- ORACLE物化檢視入門Oracle
- 物化檢視-學習篇
- 刷物化檢視並行並行
- oracle物化檢視系列(二)Oracle
- oracle物化檢視系列(一)Oracle
- 12c 物化檢視 - 理解完全重新整理的物化檢視工作原理
- 物化檢視匯出匯入可能導致物化檢視日誌的失效
- Oracle普通檢視和物化檢視的區別Oracle
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- CUUG oracle物化檢視講解Oracle
- Oracle物化檢視3 - Prebuilt MVOracleUI
- Oracle 物化檢視 例項一Oracle
- Oracle物化檢視及SnapshotOracle
- 資料複製_物化檢視
- 物化檢視知識點滴
- 物化檢視學習筆記筆記
- ORACLE中的物化檢視建立Oracle