物化視圖

有個項目因為有比較多的查詢匯總,考慮到速度,所以使用了物化視圖。簡單的把用到的給整理了下。
先看簡單創建語句:
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;?--刪除物化視圖 ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387639.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387639.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387639.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么直接ping知乎的ip不能訪問知乎的網站,而百度就可以?

結論: 簡單的說,就是baidu有錢。 正文: 大型網站依靠自身稀稀落落的服務器很難滿足網頁“秒開”的用戶需求,會加入CDN加速的隊伍。 當用戶訪問 http://www.zhihu.com 時,域名解析到距離用戶最近的CDN服務器的公網IP&am…

皮膚病

小偏方治百病/《國醫絕學健康館》編委會編.—重慶:重慶出版社,2010.3(國醫絕學健康館) 濕疹 苦參湯熏洗治陰囊濕疹方 苦參、蛇麻子中藥各50克,混合后,在晚上煎湯,可直接放在臉盆中煎。煎好后&am…

MySQL-ProxySQL中間件(一)| ProxySQL基本概念

目錄 MySQL-ProxySQL中間件(一)| ProxySQL基本概念: https://www.cnblogs.com/SQLServer2012/p/10972593.htmlMySQL-ProxySQL中間件(二)| Admin Schemas介紹:https://www.cnblogs.com/SQLServer2012/p/109…

01 ftp上傳簡單示例服務端

import json import socket import structserver socket.socket() server.bind((127.0.0.1,8001)) server.listen() conn,addr server.accept()#首先接收文件的描述信息的長度 struct_data_len conn.recv(4) data_len struct.unpack(i,struct_data_len)[0]# 通過文件信息的…

標簽td設置隱藏(hidden)

這樣設置這個td就不會被其他的td給擠掉了! 還有一種方法就是把tr標簽的solid設置為0px 這個方法把td標簽的left,right,bottom,top的邊框的solid全部設置為0px;轉載于:https://www.cnblogs.com/tranquilityMan/p/10972811.html

Windows Server 2008 NFS

打開Windows Server 2008的Dos運行窗口(不是powershell),然后鍵入: servermanagercmd.exe -install FS-NFS-Services 安裝完畢之后,就要把NFS的存貯映射到Windows Server 2008上某個盤符以供使用,但為了…

金融反欺詐模型----項目實戰--機器學習

機器學習:從源數據清洗到特征工程建立談金融反欺詐模型訓練 本文旨在通過一個完整的實戰例子,演示從源數據清洗到特征工程建立,再到模型訓練,以及模型驗證和評估的一個機器學習的完整流程。由于初識機器學習,會比較多的…

快餐文化短視頻源碼行業競爭激烈,短視頻發展任重道遠

隨著移動互聯技術的興起,形式多樣的短視頻源碼軟件為受眾開辟了短視頻時代,賦予視頻以新的時代內涵。梨視頻、美拍、快手、抖音等APP充斥了人們的生活,因此不少人群對視頻軟件產生了依賴感。短視頻源碼APP行業發展至今,產品和營運…

Win7下如何掛載NFS共享目錄

NFS是Unix中廣泛使用的文件共享協議,在Linux下得到了傳承,使用簡單,讀寫性能強大。過去Windows與Linux共享文件夾需要使用Samba(CIFS)協議,雖然定制性更高,但設置和使用都比較繁瑣。Windows 7加…

使用Chrome瀏覽器自動下載文件并保存到指定的文件路徑(使用Selenium更改Chrome默認下載存儲路徑)...

https://blog.csdn.net/zbj18314469395/article/details/81207268轉載于:https://www.cnblogs.com/person008/p/10980964.html

vue 源碼學習(一) 目錄結構和構建過程簡介

Flow vue框架使用了Flow作為類型檢查,來保證項目的可讀性和維護性。vue.js的主目錄下有Flow的配置.flowconfig文件,還有flow目錄,指定了各種自定義類型。 在學習源碼前可以先看下Flow的語法 官方文檔 目錄結構 vue.js源碼主要在src下 src ├─…

count慢的問題解決

SELECT count(*) FROM (SELECT DISTINCT DMPNN.ID AS NEED_ID, V2 VDMPSX, DMPNN.DMP_NUM AS DMPNN_NUM, DTT.TASK_ID AS TASK_ID, /*任務ID*/ (SELECT NVL(TO_CHAR(workload),) FROM DMP_ALLOCATION_NEED_RESULT dnr WHERE dnr.anr_id DTT.Anr_Id ) GUIBANWORKLOAD, …

SpringBoot + MyBatis(注解版),常用的SQL方法

一、新建項目及配置 1.1 新建一個SpringBoot項目&#xff0c;并在pom.xml下加入以下代碼 <dependency>    <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</vers…

項目進行JVM調優 Jconsole

最近對公司的項目進行JVM調優&#xff0c;使用了JDK自帶的jconsole查看Tomcat運行情況&#xff0c;記錄下配置以便以后參考&#xff1a; 首先&#xff0c;修改Tomcat的bin目錄下的catalina.bat文件&#xff0c;在JAVA_OPTS變量中添加下面四行&#xff0c;即可 set JAVA_OPTS %J…

ECharts 點擊非圖表區域的點擊事件不觸發問題

1. 通過 myChart.getZr().on(click, fn) 監聽整個圖表的點擊事件&#xff0c;注冊回調 myChart.getZr().on(click, () > {//拿到index即可取出被點擊數據的所有信息console.log(clickIndex) }) 2. 在 tooltip 的 formatter 函數中&#xff0c;每次調用都記錄下需要的參數&am…

強大的django-debug-toolbar,django項目性能分析工具

強大的django-debug-toolbar,django項目性能分析工具 給大家介紹一個用于django中debug模式下查看網站性能等其他信息的插件django-debug-toolbar 首先安裝 pip install django-debug-toolbar 接下來在自己django項目中的settings中添加配置 INSTALLED_APPS [debug_toolbar,]M…

個人作業——軟件工程實踐總結

一、請回望暑假時的第一次作業&#xff0c;你對于軟件工程課程的想象 1&#xff09;對比開篇博客你對課程目標和期待&#xff0c;“希望通過實踐鍛煉&#xff0c;增強計算機專業的能力和就業競爭力”&#xff0c;對比目前的所學所練所得&#xff0c;在哪些方面達到了你的期待和…

利用jdk自帶的運行監控工具JConsole觀察分析Java程序的運行 Jtop

利用jdk自帶的運行監控工具JConsole觀察分析Java程序的運行 原文鏈接 一、JConsole是什么 從Java 5開始 引入了 JConsole。JConsole 是一個內置 Java 性能分析器&#xff0c;可以從命令行或在 GUI shell 中運行。您可以輕松地使用 JConsole&#xff08;或者&#xff0c;它更高端…

java版電子商務spring cloud分布式微服務b2b2c社交電商:服務容錯保護(Hystrix斷路器)...

斷路器斷路器模式源于Martin Fowler的Circuit Breaker一文。“斷路器”本身是一種開關裝置&#xff0c;用于在電路上保護線路過載&#xff0c;當線路中有電器發生短路時&#xff0c;“斷路器”能夠及時的切斷故障電路&#xff0c;防止發生過載、發熱、甚至起火等嚴重后果。在分…

微信小程序頁面跳轉、邏輯層模塊化

一、頁面的跳轉 微信小程序的頁面跳轉函數方法有兩個&#xff0c;另外還有兩種模塊跳轉方式。 函數跳轉&#xff1a; 1.wx.navigateTo(OBJECT)&#xff1a; wx.navigateTo({url: test?id1})//保留當前頁面&#xff0c;跳轉到應用內的某個頁面&#xff0c;使用wx.navigateBack可…