物化檢視的快速重新整理測試與物化檢視日誌
前言:一般在建立物化檢視的時候,在資料量不大的時候,重新整理的方式都是採用完全重新整理的。隨著系統的使用一些物化檢視的源表的資料量在不斷的增長,原本採用完全方式幾秒就能重新整理完成的物化檢視,現在需要等待很久的時間才能重新整理完成。其實物化檢視從一開始就幫我們想好了解決方法:通過物化檢視日誌來實現物化檢視的快速重新整理;
一、物化檢視日誌的介紹
1.1 物化檢視快速重新整理的原理:要先了解完全重新整理的原理是先把物化檢視的資料全部刪除,然後再把基表的資料插入到物化檢視中;但是當資料達到百萬級別的資料時,如果源表更新了一條資料,完全重新整理就得刪除物化檢視的所有資料再進行插入;
而快速重新整理,會保留物化檢視的資料,然後基表的所有資料的變更記錄到物化檢視日誌中。這樣如果源表資料還是百萬級別,且這個時候更新了一條資料,物化檢視重新整理的過程中根據物化檢視的日誌,只要更新修改的那條特定記錄,便可達到快速重新整理的作用;
簡單來講,物化檢視日誌就是一個資料庫引擎自動偉華的表,用來跟蹤基表發生的變更;
1.2 物化檢視的重新整理方式:我們知道如果需要進行快速重新整理,則需要建立物化檢視日誌。Oracle物化檢視日誌根據不同物化檢視的快速重新整理的需要,可以建立為ROWID或PRIMARY KEY型別的。還可以選擇是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
二、物化檢視快速重新整理的測試
2.1 建立一個基表
CREATE TABLE T_JOHN ( NAME VARCHAR2(20 BYTE), SALE VARCHAR2(20 BYTE), ) TABLESPACE USERS RESULT_CACHE (MODE DEFAULT) PCTUSED 0 PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) LOGGING NOCOMPRESS NOCACHE NOPARALLEL MONITORING; |
2.2 建立物化檢視MV_JOHN
CREATE MATERIALIZED VIEW MV_JOHN (NAME,SALE) TABLESPACE USERS PCTUSED 0 PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) NOCACHE LOGGING NOCOMPRESS NOPARALLEL BUILD IMMEDIATE USING INDEX TABLESPACE USERS PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) REFRESH FAST ON DEMAND WITH ROWID AS SELECT NAME,SALE FROM T_JOHN; |
REFRESH FAST ON DEMAND:在需要要的時候,進行快速重新整理;
2.3 建立物化檢視日誌
CREATE MATERIALIZED VIEW LOG ON T_JOHN TABLESPACE USERS PCTUSED 0 PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) NOCACHE LOGGING NOPARALLEL WITH ROWID EXCLUDING NEW VALUES; |
WITH ROWID:通過ROWID的方式,重新整理物化檢視;
2.4 以上完成後,便可以在基表上面進行資料的修改;
執行手工重新整理後,可以檢視物化檢視的資料也更新了;
Begin Dbms_mView.Refresh('MV_JOHN'); End; |
三、物化檢視管理
3.1 ORACLE提供了檢視USER_MVIEW_LOGS可以檢視,使用者下物化檢視的重新整理情況
物化檢視日誌的名稱為MLOG$_後面跟基表的名稱,如果表名的長度超過20位,則只取前20位,當截短後出現名稱重複時,Oracle會自動在物化檢視日誌名稱後面加上數字作為序號。
3.2 MLOG$_T_WZQ
--這是一個primarykey的物化檢視日誌:
SQL> desc MLOG$_T_WZQ
Name Null? Type
------------------------------------------------- ------------
GROUP_ID VARCHAR2(10)
PARENT_GROUP_ID VARCHAR2(10)
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
XID$$ NUMBER
相關解釋如下:
SNAPTIME$$:用於表示重新整理時間。
DMLTYPE$$:用於表示DML操作型別,I表示INSERT,D表示DELETE,U表示UPDATE。
OLD_NEW$$:用於表示這個值是新值還是舊值。N(EW)表示新值,O(LD)表示舊值,U表示UPDATE操作。
CHANGE_VECTOR$$:表示修改向量,用來表示被修改的是哪個或哪幾個欄位。
當重新整理完成後MLOG$_T_WZQ相應的日誌也會被清除了,因為這些日誌已經沒有儲存的必要了;
四、總結:物化檢視是一把利器,在調優的過程中會經常用到,快速重新整理也只是物化檢視眾多功能中很小的一個,隨著業務場景的增加和資料量的增長相信用到物化檢視的地方也會越來越多;
*********************************************************************************************************************
本文作者:JOHN QQ:1916066696 (請備註資料庫)
ORACLE技術部落格:ORACLE 獵人筆記 http://blog.itpub.net/12679300/
請掃描加微訊號!
******************************************************************************************************************
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-1330064/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(三)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(二)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(一)
- 物化檢視日誌與增量重新整理
- 【物化檢視】幾種物化檢視日誌分析
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- 物化檢視日誌表被DROP後建立物化檢視報錯
- ORACLE物化檢視測試Oracle
- 物化檢視日誌的維護
- 物化檢視匯出匯入可能導致物化檢視日誌的失效
- oracle物化檢視日誌系列(一)Oracle
- oracle物化檢視日誌系列(二)Oracle
- oracle物化檢視日誌系列(三)Oracle
- 12c 物化檢視 - 理解完全重新整理的物化檢視工作原理
- 物化檢視(Materialized View)的重新整理回滾測試ZedView
- 物化檢視日誌對UPDATE的影響
- 【ORACLE】物化檢視快速重新整理限制條件Oracle
- Oracle 物化檢視 快速重新整理 限制 說明Oracle
- 物化檢視comlete重新整理會產生大量的日誌
- 物化檢視妙用__表同步使用物化檢視方法
- oracle 物化檢視重新整理方法Oracle
- 物化檢視日誌的重建 與 ORA-12034
- 多個物化檢視導致物化日誌無法及時更新
- 12c 物化檢視 - 對快速重新整理的理解
- Oracle 物化檢視快速重新整理對效能的影響Oracle
- oracle物化檢視Oracle
- 包含複雜查詢的快速重新整理的物化檢視
- Oracle 物化檢視1 - 單表聚合及其快速重新整理Oracle
- 物化檢視詳解
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- materialized view (物化檢視)ZedView
- 物化檢視 on commitMIT
- 普通檢視和物化檢視的區別
- ClickHouse效能優化?試試物化檢視優化
- ClickHouse 效能優化?試試物化檢視優化