Oracle Database 的 Materialized View

Oracle Database 的 Materialized View(物化視觀表) 是一種把複雜查詢的結果預先計算並儲存在磁碟中的真實資料物件。它像是一張實體表,能大幅加快大數據或複雜統計的查詢速度。

主要用途

  • 加快查詢速度:預先算出大表格的總和、平均或關聯結果,不用每次都重新跑慢速查詢。
  • 支援查詢重寫 (Query Rewrite):系統會自動把使用者對原表的查詢改去讀取物化視觀表,不需修改前端程式碼。
  • 同步與複製資料:透過資料庫連線(DB Link)將遠端或別台主機的資料抓到本地存放,減少跨網路查詢。
  • 分散式系統快取:把外部資料或報表常用數據暫存在本機,降低主資料庫負載。

核心特點

  • 佔用儲存空間:因為資料是真實存在的,會消耗磁碟容量。
  • 資料更新(重新整理)機制
    • On Demand:手動或按排程更新(完全重新整理或只更新變動的快速更新)。
    • On Commit:當來源表有資料寫入(Commit)時自動更新。

確認 Query Rewrite

如果下列SQL執行結果為 query_rewrite_enabled = TRUE 代表是可以寫入

SQL
SELECT name,
       value
FROM v$parameter
WHERE name LIKE '%query_rewrite%';

確認是否存在 Materialized View

SQL
SELECT owner,
       mview_name,
       rewrite_enabled,
       rewrite_capability,
       staleness,
       last_refresh_type
FROM dba_mviews
WHERE owner IN ('APPS','MSC','APPLSYS')
ORDER BY owner, mview_name;

如果沒有 DBA_MVIEWS 權限,可以使用

SQL
SELECT owner,
       mview_name,
       rewrite_enabled,
       staleness
FROM all_mviews
WHERE owner IN ('APPS','MSC','APPLSYS');

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *