李凡



摘 要:在Oracle數據庫中,查詢優化是數據庫設計的關鍵環節,它涉及到數據庫軟件的整體優劣,普通視圖的查詢時間長,系統開銷大,采用物化視圖勢在必行,以下就物化視圖的結構進行分析,通過比較,闡明物化視圖在大數據環境下的重要性。
關鍵字:數據庫;查詢優化;物化視圖
1 物化視圖的定義
物化視圖就是具有物理存儲的特殊視圖,占據物理空間。它是用于預先計算并保存表連接或聚集等耗時較多操作的結果,這樣,在執行查詢時,就可以避免進行這些耗時的操作,從而快速的得到結果。它需要和源表進行同步,不斷刷新物化視圖中的數據。
2 普通視圖的局限
在Oracle 中使用普通視圖時,如果這樣的視圖有多張表的JOIN或ORDER BY子句,而且表相當大,則會相當耗時,使用普通視圖的查詢效率很低,視圖查詢內部過程如圖1所示。為了解決這個問題,Oracle提出了物化視圖的概念,物化視圖是具有物理存儲的特殊視圖,它占用存儲空間,可以進行分區和創建索引等操作。
3 基于物化視圖的查詢
在Oracle 中用戶如果創建了基于基表的物化視圖,系統將自動計算且使用物化視圖來完成查詢,畢竟物化視圖在某些情況下可以節約時間,減少系統開銷,
我們把Oracle 中基于物化視圖的查詢稱為查詢重寫。提高查詢性能是物化視圖的一大優點,Oracle優化器就是通過代價計算來選擇物化視圖,通過查詢重寫來完成用戶查詢。優化器自動判斷一個物化視圖是否滿足用戶的查詢要求,以及是否可以提高查詢性能,如果滿足要求且可以提高查詢性能,優化器就重寫用戶提交的查詢,以使用物化視圖,查詢重寫對用戶而言是不可見的。
4 物化視圖的同步
物化視圖是基于基表創建的,所以當基表變化時,需要同步數據以更新物化視圖中的數據,從而保持物化視圖中的數據和基表中的數據一致性。Oracle提供了兩種
物化視圖的刷新方式,即ON COMMIT方式和ON DEMAND方式。使用ON COMMIT方式,當一個基表的變化提交時,則物化視圖自動更新,完成與基表的同步。而使用ON DEMAND方式時,需要手動同步物化視圖和基表數據,此時必須執行REFRESH過程來同步物化視圖。
5 物化視圖的創建
用戶可以根據自己的需要來創建物化視圖,以解決由于JOIN 和ORDERB BY子句帶來的查詢耗時問題。首先要創建物化視圖的前提條件,就是用戶必須具有創建物化視圖的權限,然后是創建物化視圖的日志,用戶選擇刷新類型為FAST的同步基表,使用FAST類型同步物化視圖如圖表2所示,所以要對這兩個基表創建物化視圖日志,最后是創建物化視圖及刪除相應的物化視圖。
6 物化視圖的使用環境
物化視圖適用于數據倉庫、分布式計算以及移動計算等環境。對于數據倉庫需要的基表匯總,物化視圖用戶進行類似的計算來存儲聚合后的數據。在分模式環境中可以通過物化視圖實現不同節點間的數據同步,使得同樣的數據分布在不同的物理空間,更好地響應用戶的查詢,減少中心數據庫服務器的負擔,物化視圖在分布式環境中的應用如圖3所示,對于移動計算環境,也是利用物化視圖的優化查詢功能來節約查詢時間,同時移動客戶端使用物化視圖下載一個數據子集,也可以定期地從中央服務器獲取新數據,在客戶端修改后發到中央服務器。
7 結束語
物化視圖極大地方便了用戶對于數據的操作,不但增加了對表訪問的安全性,而且減少了很多復雜的查詢過程,引入物化視圖,是基于Oracle新版本提出的理念,物化視圖可以用于預先計算并保存表連接或聚集等耗時較多操作的結果,這樣,在執行查詢時,就可以避免進行這些耗時的操作,而從快速的得到結果。物化視圖有很多方面和索引很相似:使用物化視圖的目的是為了提高查詢性能;物化視圖對應用透明,增加和刪除物化視圖不會影響應用程序中SQL語句的正確性和有效性;物化視圖需要占用存儲空間;當基表發生變化時,物化視圖也應當刷新。總之,物化視圖是數據庫技術的發展趨勢。
參考文獻
[1] 劉靜濤,張明安. 基于Oracle物化視圖的數據同步研究[J]. 軟件,2015,2.
[2] 張輝,孫偉華. 基于Oracle數據庫的查詢優化研究[J].計算機技術,2015,8.
[3] 閔昭浩. 物化視圖在Oracle 數據倉庫中的研究[J]. 湖北大學學報,2015,10.
[4] 林樹澤,孔浩.《Oracle DBA教程》[M]. 清華大學出版社,2012,4.