日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

物化视图

發布時間:2023/11/30 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 物化视图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有個項目因為有比較多的查詢匯總,考慮到速度,所以使用了物化視圖。簡單的把用到的給整理了下。 先看簡單創建語句: create?materialized?view?mv_materialized_test?refresh?force?on?demand?start?with?sysdate?next to_date(concat(to_char(?sysdate+1,'dd-mm-yyyy'),'10:25:00'),'dd-mm-yyyy?hh24:mi:ss')?as select?*?from?user_info;?--這個物化視圖在每天10:25進行刷新 物化視圖也是種視圖。Oracle的物化視圖是包括一個查詢結果的數據庫對像,它是遠程數據的的本地副本,或者用來生成基于數據表求和的匯總表。物化視圖存儲基于遠程表的數據,也可以稱為快照。 物化視圖可以查詢表,視圖和其它的物化視圖。 特點: (1) 物化視圖在某種意義上說就是一個物理表(而且不僅僅是一個物理表),這通過其可以被user_tables查詢出來,而得到確認; (2) 物化視圖也是一種段(segment),所以其有自己的物理存儲屬性; (3) 物化視圖會占用數據庫磁盤空間,這點從user_segment的查詢結果,可以得到佐證; 創建語句:create materialized view mv_name as select * from table_name 因為物化視圖由于是物理真實存在的,故可以創建索引。 創建時生成數據: 分為兩種:build immediate?和?build deferred, build immediate是在創建物化視圖的時候就生成數據。 build deferred則在創建時不生成數據,以后根據需要在生成數據。 如果不指定,則默認為build immediate刷新模式: 物化視圖有二種刷新模式: 在創建時refresh mode是?on demand?還是?on commit。 on demand 顧名思義,僅在該物化視圖“需要”被刷新了,才進行刷新(REFRESH),即更新物化視圖,以保證和基表數據的一致性; on commit? 提交觸發,一旦基表有了commit,即事務提交,則立刻刷新,立刻更新物化視圖,使得數據和基表一致。一般用這種方法在操作基表時速度會比較慢。 創建物化視圖時未作指定,則Oracle按?on demand?模式來創建。 上面說的是刷新的模式,針對于如何刷新,則有三種刷新方法: 完全刷新(COMPLETE):?會刪除表中所有的記錄(如果是單表刷新,可能會采用TRUNCATE的方式),然后根據物化視圖中查詢語句的定義重新生成物化視圖。 快速刷新(FAST):?采用增量刷新的機制,只將自上次刷新以后對基表進行的所有操作刷新到物化視圖中去。FAST必須創建基于主表的視圖日志。對于增量刷新選項,如果在子查詢中存在分析函數,則物化視圖不起作用。 FORCE方式:這是默認的數據刷新方式。Oracle會自動判斷是否滿足快速刷新的條件,如果滿足則進行快速刷新,否則進行完全刷新。 關于快速刷新:Oracle物化視圖的快速刷新機制是通過物化視圖日志完成的。Oracle通過一個物化視圖日志還可以支持多個物化視圖的快速刷新。物化視圖日志根據不同物化視圖的快速刷新的需要,可以建立為ROWID或PRIMARY KEY類型的。還可以選擇是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。 查詢重寫(QueryRewrite): 包括?enable query rewrite?和?disable query rewrite?兩種。 分別指出創建的物化視圖是否支持查詢重寫。查詢重寫是指當對物化視圖的基表進行查詢時,oracle會自動判斷能否通過查詢物化視圖來得到結果,如果可以,則避免了聚集或連接操作,而直接從已經計算好的物化視圖中讀取數據。 默認為disable query rewrite語法: create?materialized?view?view_name
refresh?
[fast|complete|force]
[
on?[commit|demand
]?|
start?
with?(start_time)?next?(next_time) ] AS?subquery; 具體操作 創建物化視圖需要的權限: grant?create?materialized?view?to?user_name;? 在源表建立物化視圖日志: create?materialized?view?log?on?test_table?? tablespace?test_space?--?日志空間?? with?primary?key;?????--?指定為主鍵類型 在目標數據庫上創建MATERIALIZED VIEW: create?materialized?view?mv_materialized_test?refresh?force?on?demand?start?with?sysdate?next to_date(concat(to_char(sysdate+1,'dd-mm-yyyy'),'10:25:00'),'dd-mm-yyyy?hh24:mi:ss')?as select?*?from?user_info;?--這個物化視圖在每天10:25進行刷新? 修改刷新時間: alter?materialized?view?mv_materialized_test?refresh?force?on?demand?start?with?sysdate? next?to_date(concat(to_char(sysdate+1,'dd-mm-yyyy'),'?23:00:00'),'dd-mm-yyyy?hh24:mi:ss');alter?materialized?view?mv_materialized_test?refresh?force?on?demand?start?with?sysdate? next?trunc(sysdate,'dd')+1+1/24;?--?每天1點刷新?
建立索引: create?index?IDX_MMT_IU_TEST on?mv_materialized_test(ID,UNAME)?? tablespace?test_space;?
刪除物化視圖及日志: drop?materialized?view?log?on?test_table;????--刪除物化視圖日志:? drop?materialized?view?mv_materialized_test;?--刪除物化視圖 ?

總結

以上是生活随笔為你收集整理的物化视图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。