Oracle 10g R2特性之資料倉儲整合特性(1)

來源:互聯網
上載者:User

分區變更追蹤:不需要 MV 日誌

要瞭解此增強功能,首先必須瞭解物化視圖 (MV) 重新整理過程中的分區修整概念。

假設基於列 ACC_MGR_ID 對錶 ACCOUNTS 進行了分區,每個 ACC_MGR_ID 值一個分區。您根據ACCOUNTS 建立了一個名為 ACC_VIEW 的 MV,該 MV 也根據列 ACC_MGR_ID 進行了分區,每個ACC_MGR_ID 一個分區,如所示:

假設已經更新了表 ACCOUNTS 中的記錄,但只在分區 P1 中進行了此更新。要快速重新整理此 MV,您只需重新整理分區 P1 而非整個表,這裡正是與 ACC_MGR_ID 相關的資料所在的分區。Oracle 自動執行此任務,通過一個名為分區變更追蹤 (PCT) 的特性跟蹤對分區的更改。但有一個問題需稍加註意:要在快速重新整理的過程中啟用 PCT,必須建立 MV 日誌,當表中的行發生變化會填充這些日誌。發出重新整理命令後,重新整理進程將讀取 MV 日誌以識別這些更改。

不用說,該要求增加了操作的總執行時間。此外,附加的插入操作將消耗 CPU 週期和 I/O 頻寬。

幸好,在 Oracle 資料庫 10g 第 2 版中,PCT 不需要 MV 日誌即可工作。讓我們看一看它的作用方式。首先,確認表 ACCOUNTS 中沒有 MV 日誌。

SQL> select *
2  from dba_mview_logs
3  where master = 'ACCOUNTS';

no rows selected

現在,更新該表中的某個記錄。

update accounts set last_name = '...'
where acc_mgr_id = 3;

 該記錄位於分區 P3 中。

現在,您就可以重新整理此 MV 了。但首先記錄表 ACCOUNTS 所有段的段級統計資訊。稍後,您將使用這些統計資訊瞭解使用了哪些段。

select SUBOBJECT_NAME, value from v$segment_statistics
where owner = 'ARUP'
and OBJECT_NAME = 'ACCOUNTS'
and STATISTIC_NAME = 'logical reads'
order by SUBOBJECT_NAME
/

SUBOBJECT_NAME                      VALUE
------------------------------ ----------
P1                                   8320
P10                                  8624
P2                                  12112
P3                                  11856
P4                                   8800
P5                                   7904
P6                                   8256
P7                                   8016
P8                                   8272
P9                                   7840
PMAX                                  256

11 rows selected. 

使用快速重新整理重新整理物化視圖 ACC_VIEW。

execute dbms_mview.refresh('ACC_VIEW','F')

'F' 參數指示快速重新整理。但如果表沒有 MV 日誌,它是否可以起作用?

重新整理完成後,再次檢查表 ACCOUNTS 的段統計資訊。結果如下所示:

SUBOBJECT_NAME                      VALUE
------------------------------ ----------
P1                                   8320
P10                                  8624
P2                                  12112
P3                                  14656
P4                                   8800
P5                                   7904
P6                                   8256
P7                                   8016
P8                                   8272
P9                                   7840
PMAX                                  256

這些段統計資訊顯示了在一個邏輯讀取過程中選擇的段。由於這些統計資訊是累積的,因此您必須查看值(而非絕對值)中的更改。如果仔細查看以上值,您便會發現只有分區 P3 的值發生了變化。因此,在重新整理過程中只選擇了分區 P3 而非整個表,確認 PCT 能否在表即使沒有 MV 日誌的情況下工作。

即使在基表沒有 MV 日誌的情況下也可以快速重新整理 MV 的能力是一個強大而有用的特性,從而允許您可以在已分區的 MV 中執行快速重新整理而不會增加效能開銷。我認為,該特性是 Oracle 資料庫 10g 第 2 版中最有用的資料倉儲增強功能


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.