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