劉曉娜,杜永文
(1.甘肅聯(lián)合大學(xué) 電信學(xué)院,甘肅 蘭州 730010;2.蘭州交通大學(xué) 電信學(xué)院,甘肅 蘭州 730070)
隨著數(shù)據(jù)庫數(shù)據(jù)量的不斷增大,數(shù)據(jù)庫的性能優(yōu)化越來越凸顯其重要性.要合理的提高移動(dòng)數(shù)據(jù)庫性能,首先要對移動(dòng)計(jì)算環(huán)境和移動(dòng)數(shù)據(jù)庫有所了解.在移動(dòng)計(jì)算環(huán)境下,用戶可以攜帶移動(dòng)設(shè)備自由移動(dòng),通過移動(dòng)通信網(wǎng)絡(luò)保持與固定節(jié)點(diǎn)和其他移動(dòng)節(jié)點(diǎn)的連接.
與傳統(tǒng)環(huán)境相比,移動(dòng)計(jì)算環(huán)境具有以下特點(diǎn):
①用戶的移動(dòng)性.用戶可以在移動(dòng)過程中進(jìn)行各種操作.②網(wǎng)絡(luò)帶寬的不對稱性.下行(服務(wù)器到移動(dòng)端)帶寬大于上行(移動(dòng)端到服務(wù)器)帶寬,移動(dòng)終端甚至可以在不能發(fā)送信息的情況下仍可以接收到服務(wù)器發(fā)送給它的信息,下行帶寬可達(dá)10MB/S.③頻繁斷接.移動(dòng)端可能因?yàn)橛脩糁鲃?dòng)關(guān)機(jī)或網(wǎng)絡(luò)不穩(wěn)定而間歇性的入網(wǎng)、斷接.
另外,移動(dòng)計(jì)算中的使用設(shè)備也有其特殊性.
①電源能力有限.移動(dòng)設(shè)備電源通常只能維持4~6小時(shí).②計(jì)算能力有限.目前移動(dòng)設(shè)備最常用的主頻是400MHz左右的處理器,不適合運(yùn)行需要大計(jì)算量的應(yīng)用.③存儲(chǔ)能力有限.移動(dòng)設(shè)備的內(nèi)存和硬盤容量相對較小,有些設(shè)備甚至以SD卡做為存儲(chǔ)設(shè)備,因此數(shù)據(jù)的存儲(chǔ)要充分利用和優(yōu)化內(nèi)存資源,提高系統(tǒng)性能.④屏幕面積小.這就需要我們優(yōu)化用戶界面,既要提供豐富的功能選擇,又要方便用戶的瀏覽和操作.
移動(dòng)環(huán)境的特點(diǎn)以及移動(dòng)設(shè)備的資源有限性是我們在做優(yōu)化時(shí)考慮的主要因素.為了減少查詢延遲現(xiàn)象的發(fā)生,客戶端的查詢應(yīng)盡可能少的向服務(wù)器發(fā)送請求.在TCP和socket機(jī)制中,一次大數(shù)據(jù)的請求傳輸比多次小數(shù)據(jù)的請求傳輸速度要快.除了優(yōu)化網(wǎng)絡(luò)處理,還應(yīng)該盡量使客戶端的代碼精煉高效,要盡量減少應(yīng)用對內(nèi)存的占用.
視圖是數(shù)據(jù)庫中的一個(gè)重要概念,實(shí)際上存在的只是它的腳本,當(dāng)調(diào)用代碼時(shí)才訪問數(shù)據(jù)表進(jìn)行查詢,還可以把對遠(yuǎn)地?cái)?shù)據(jù)庫的訪問封裝在視圖中,使之對上層應(yīng)用程序透明,增加移動(dòng)訪問中安全性.而物化視圖是oracle數(shù)據(jù)庫提供的一種重要視圖方式,常用于數(shù)據(jù)庫的容災(zāi),它并不是傳統(tǒng)意義上的虛擬視圖,是實(shí)體化視圖,和表一樣可以存儲(chǔ)數(shù)據(jù)、查詢數(shù)據(jù);具體使用過程中可以預(yù)先計(jì)算并保存表連接或聚集等耗時(shí)較多的操作的結(jié)果,這樣,在執(zhí)行查詢時(shí),就可以避免進(jìn)行這些耗時(shí)的操作,從而快速的得到結(jié)果.物化視圖對應(yīng)用透明,增加和刪除物化視圖不會(huì)影響應(yīng)用程序SQL語句的正確性和有效性.尤其是在移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)庫中,主備數(shù)據(jù)庫數(shù)據(jù)同步一般通過物化視圖實(shí)現(xiàn),主備數(shù)據(jù)庫通過data link連接,在主備數(shù)據(jù)庫物化視圖時(shí)進(jìn)行數(shù)據(jù)復(fù)制.當(dāng)主數(shù)據(jù)庫垮掉時(shí),備數(shù)據(jù)庫接管,實(shí)現(xiàn)容災(zāi).這種特性使得物化視圖能很好地適用在不穩(wěn)定的移動(dòng)計(jì)算環(huán)境.
創(chuàng)建物化視圖時(shí)可以指定多種選項(xiàng),主要選項(xiàng)如下:
(1)創(chuàng)建方式(Build Methods):Build Immediate和Build Deferred兩種.Build Immediate是在創(chuàng)建物化視圖的時(shí)候就生成數(shù)據(jù),而Build Deferred則在創(chuàng)建時(shí)不生成數(shù)據(jù),以后根據(jù)需要再生成數(shù)據(jù).
(2)查詢重寫(Query Rewrite):查詢重寫是指當(dāng)對物化視圖的基表進(jìn)行查詢時(shí),Oracle會(huì)自動(dòng)判斷能否通過查詢物化視圖來得到結(jié)果,如果可以,則避免了聚集或連接操作,而直接從已經(jīng)計(jì)算好的物化視圖中讀取數(shù)據(jù).
(3)刷新(Refresh):指當(dāng)基表發(fā)生了DML操作后,物化視圖何時(shí)采用哪種方式和基表進(jìn)行同步.刷新的模式有兩種:On Demand和On Commit.On Demand指物化視圖在用戶需要的時(shí)候進(jìn)行刷新,可以手工通過DBMS_MVIEW.REFRESH等方法來進(jìn)行刷新,也可以通過JOB定時(shí)進(jìn)行刷新.
(4)排序:在建立物化視圖的時(shí)候可以指定Order by語句,使生成的數(shù)據(jù)按照一定的順序進(jìn)行保存,以增快查詢速度.
(5)物化視圖可以進(jìn)行分區(qū),此方法適用于按地域查詢的情況,如采用基于分割的地址更新策略時(shí),由位置服務(wù)器維護(hù)的移動(dòng)用戶對象包含以下數(shù)據(jù)成員和方法:
分割集合——記錄MSS的分割情況,例如{Cell1,Cell2},{Cell3,Cell4,Cell5};
LOC——記錄移動(dòng)用戶最近報(bào)告的地址(無線單元的ID),例如Cell1;
ERR——移動(dòng)用戶當(dāng)前所在的分割,例如,若LOC=Cell1,則ERR={Cell1,Cell2};
loc()——一個(gè)方法,用于返回該用戶的實(shí)際地址,即上面介紹的地址查詢過程.
例如在移動(dòng)查詢的應(yīng)用中,有各種各樣涉及地址的查詢,“請尋找一家校園附近的超市”,“查找X,Y,Z,這三人都在同一條公路上,且Y在X與Z之間”,等等.為不失一般性,以具有三個(gè)主鍵的數(shù)據(jù)表為例.表1是“超市分布統(tǒng)計(jì)表”,其中超市名稱、地理位置、超市狀況是主鍵.
表1 超市分布統(tǒng)計(jì)表
為該數(shù)據(jù)表建立主鍵刷新方式的物化視圖:
SQL>CREATE MATERIALIZED VIEW LOG ON超市分布統(tǒng)計(jì)表with primary key;
之后,對按地址查詢發(fā)出請求的用戶建立表進(jìn)行增加、刪除、更新操作,
SELECT x1,x2,…,xn FROM Users
WHERE(x1.loc=l1 ∧…∧ xn.loc=ln) ∧ C(l1,…,ln) ∧ W(x1,…,xn)
其中C(l1,…,ln)是關(guān)于地址l1,…,ln的n元約束條件,而W(x1,…,xn)是關(guān)于對象x1,x2,…,xn非地址屬性的n元約束條件,Users是所有移動(dòng)用戶的集合.
“用戶-超市情況統(tǒng)計(jì)表”的物化視圖日志“mlog$一統(tǒng)計(jì)表”內(nèi)容如表2所示.
表2 物化視圖-“mlog$統(tǒng)計(jì)表”
核心代碼如下:
Create materia1ized view dzz_zhenchayuanshi_view/*
bui1d immediate refresh fast on commit as
se1ect dzz_zhencha_comm.ph dzz_zhencha_comm.
source dzz_zhencha_comm.ptlx
dzz_zhencha_comm.ptmcdzz_zhencha_dyna. fw
dzz_zhencha_dyna. time
from dzz_zhencha_comm dzz_zhencha_dyna where
dzz_zhencha_comm.biaozhi=dzz_zhencha_dyna.biaozhi
本文重點(diǎn)論述了物化視圖技術(shù)在提高oracle查詢速度方面所起的作用,這也是數(shù)據(jù)庫前臺(tái)查詢常用的優(yōu)化手段,在實(shí)際工程應(yīng)用上可操作性比較強(qiáng).經(jīng)按地址查詢驗(yàn)證,引入物化視圖對移動(dòng)數(shù)據(jù)庫中尤其是動(dòng)態(tài)變化的數(shù)據(jù)在查詢時(shí)速度可以有很大的提高.
參考文獻(xiàn):
[1]Benjamin C.M. Fung,Privacy-preserving data publishing for cluster analysis[J],Data & Knowledge Engineering,2009(1),552-575.
[2]孫江萍.移動(dòng)數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化及自適應(yīng)管理技術(shù)研究[D],廣州:東南大學(xué),2007.
[3]尹萍.SQL Server數(shù)據(jù)庫性能優(yōu)化[J].計(jì)算機(jī)應(yīng)用與軟件,2005(8).
[4]王振輝.SQL查詢語句優(yōu)化研究[J].計(jì)算機(jī)應(yīng)用,2009(11).