物化檢視的快速重新整理測試與物化檢視日誌
前言:一般在建立物化檢視的時候,在資料量不大的時候,重新整理的方式都是採用完全重新整理的。隨著系統的使用一些物化檢視的源表的資料量在不斷的增長,原本採用完全方式幾秒就能重新整理完成的物化檢視,現在需要等待很久的時間才能重新整理完成。其實物化檢視從一開始就幫我們想好了解決方法:透過物化檢視日誌來實現物化檢視的快速重新整理;
一、物化檢視日誌的介紹
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物化檢視快速重新整理與ORA-00001
- 物化檢視
- 物化檢視(zt)
- 基於ROWID更新的物化檢視測試
- StarRocks 物化檢視重新整理流程和原理
- StarRocks 物化檢視重新整理流程及原理
- 物化檢視日誌無法正常清除的解決方法
- ClickHouse 效能優化?試試物化檢視優化
- ClickHouse效能優化?試試物化檢視優化
- Oracle普通檢視和物化檢視的區別Oracle
- calcite物化檢視詳解
- 資料庫的物化檢視資料庫
- 用exp、imp遷移包含物化檢視日誌的資料
- Postgres使用trigger自動重新整理物化檢視
- 物化檢視如何快速完成資料聚合操作?
- hg_job配置定時重新整理物化檢視
- 物化檢視分割槽實驗
- ClickHouse 物化檢視學習總結
- 物化檢視幾個知識點
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- 使用Materialise物化檢視解耦微服務架構解耦微服務架構
- 火山引擎ByteHouse:如何最佳化ClickHouse物化檢視能力?
- 基於圖神經網路的動態物化檢視管理神經網路
- 【MVIEW】Oracle通過物化檢視同步表資料及簡介ViewOracle
- 資料泵匯出匯入物化檢視(ORA-39083)
- alertmanager: 檢視日誌
- Linux 檢視日誌Linux
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- 檢視系統的日誌
- Logminer如何檢視日誌
- Hyperf日誌檢視元件元件
- 使用SpringBoot+PostgreSQL物化檢視實現微服務設計模式 - vinsguruSpring BootSQL微服務設計模式
- 檢視日誌的幾種形式
- docker檢視容器日誌命令Docker
- windows_weblogic日誌檢視WindowsWeb
- [20230225]12c Real-time materialized view 實時物化檢視的應用.txtZedView
- 汽車之家基於 Apache Flink 的跨資料庫實時物化檢視探索Apache資料庫
- Linux 檢視日誌的命令彙總Linux