程艷艷
摘 要 在分布式數(shù)據(jù)庫系統(tǒng)中,由于物理分布的不同使得數(shù)據(jù)的查詢復(fù)雜度大大增加。對于給定的一個查詢,往往會有不同的查詢策略,而數(shù)據(jù)庫查詢優(yōu)化策略就是在諸多策略中尋找作為有效的查詢方法。有效的數(shù)據(jù)庫查詢策略能夠在查詢執(zhí)行效率上成倍提升。文章主要結(jié)合分布式數(shù)據(jù)庫系統(tǒng)的特點,對基于分布式數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化策略進行研究,以期更好的改善基于分布式數(shù)據(jù)庫系統(tǒng)的查詢效率。
關(guān)鍵詞 分布式數(shù)據(jù)庫;查詢;優(yōu)化策略
中圖分類號:TP311 文獻標識碼:A 文章編號:1671-7597(2014)04-0033-02
隨著計算機網(wǎng)絡(luò)和互聯(lián)網(wǎng)技術(shù)的快速進步,數(shù)據(jù)庫技術(shù)也取得了巨大發(fā)展。分布式數(shù)據(jù)庫系統(tǒng)是以集中式數(shù)據(jù)庫為基礎(chǔ),并且結(jié)合計算機網(wǎng)絡(luò)發(fā)展起來的,開始于20世紀的70年代,第一個基于分布式的數(shù)據(jù)庫系統(tǒng)又CCA于1979年實現(xiàn)。在20世紀90年代以后,隨著計算機和網(wǎng)絡(luò)技術(shù)的不斷成熟,分布式數(shù)據(jù)庫系統(tǒng)也開始進入商業(yè)應(yīng)用階段。分布式數(shù)據(jù)庫系統(tǒng)能夠?qū)崿F(xiàn)對計算機網(wǎng)絡(luò)內(nèi)具有邏輯關(guān)系的數(shù)據(jù)庫進行管理,并且每個單獨的結(jié)點都具有相對獨立的處理能力,可以實現(xiàn)局部應(yīng)用的功能。
1 分布式數(shù)據(jù)庫查詢優(yōu)化分析
1.1 分布式數(shù)據(jù)庫系統(tǒng)
分布式數(shù)據(jù)庫系統(tǒng)是實現(xiàn)數(shù)據(jù)庫系統(tǒng)與計算機網(wǎng)絡(luò)的有效結(jié)合,與傳統(tǒng)的集中式數(shù)據(jù)庫系統(tǒng)相比,分布式數(shù)據(jù)庫系統(tǒng)具有典型的相對獨立性、冗余度適當、事務(wù)分布式處理等特點。在目前的分布式數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)在邏輯和物理層面都具有自身的獨立性,同時數(shù)據(jù)還存在著分布層面的透明性。所謂數(shù)據(jù)的透明性,即指使用者無需對數(shù)據(jù)的邏輯分片進行考慮,同時也無需考慮數(shù)據(jù)的復(fù)制情況以及具體的物理位置、支持的數(shù)據(jù)類型等相關(guān)細節(jié)。在具有數(shù)據(jù)透明性的基礎(chǔ)上,用戶可以在不考慮數(shù)據(jù)分布的情況下編寫查詢程序,使得數(shù)據(jù)庫系統(tǒng)的使用更加簡便,有效性也會有明顯的改善?;诜植际綐?gòu)建的數(shù)據(jù)庫系統(tǒng),為了更好的節(jié)約數(shù)據(jù)存儲空間,同時保證數(shù)據(jù)的一致性,需要采取措施降低數(shù)據(jù)的冗余度,然后分布式數(shù)據(jù)庫系統(tǒng)卻需要依靠數(shù)據(jù)冗余度的增加來增加數(shù)據(jù)庫系統(tǒng)的可靠性以及系統(tǒng)的其他性能。也正是如此,由于數(shù)據(jù)冗余度的相對增加,使得基于分布式數(shù)據(jù)庫的數(shù)據(jù)查詢變得更加復(fù)雜,因此對基于分布式數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化策略研究具有十分重要的意義。
1.2 分布式查詢優(yōu)化結(jié)構(gòu)
分布式數(shù)據(jù)庫查詢包含一定的過程,一般從結(jié)構(gòu)上將分布式數(shù)據(jù)庫查詢分為四層,分別為查詢分解、數(shù)據(jù)本地化、全局優(yōu)化以及局部優(yōu)化:第一層是查詢分解,它依據(jù)全局概念模式對全局查詢語句轉(zhuǎn)化為SQL語句或關(guān)系代數(shù)表達式;第二層是數(shù)據(jù)本地化,它依據(jù)分片模式與片段的分配模式的相應(yīng)內(nèi)容將在全局關(guān)系上的查詢分解為在相關(guān)片段上的查詢,且盡可能實現(xiàn)近地化、本地化;第三層是全局優(yōu)化,它的作用是找出分片查詢的最優(yōu)操作順序,讓查詢代價達到最小,其中包括一個關(guān)鍵的操作就是關(guān)于優(yōu)化連接,通過全局優(yōu)化處理,輸出一個片段上的、優(yōu)化的關(guān)系代數(shù)的查詢,它所需要的信息來其他各個站點的自分布式數(shù)據(jù)庫的統(tǒng)計信息;最后一層是局部優(yōu)化,它主要是在各個站點上進行數(shù)據(jù)片段的查詢,由各個站點對子查詢進行優(yōu)化,其優(yōu)化過程在很大程度上和集中式數(shù)據(jù)庫的查詢優(yōu)化類似,分布式數(shù)據(jù)庫查詢代價重點考慮通信代價,所以數(shù)據(jù)本地化與全局優(yōu)化是分布式數(shù)據(jù)庫查詢優(yōu)化的核心。
1.3 分布式查詢優(yōu)化目標
在目前的數(shù)據(jù)庫系統(tǒng)查詢策略中,無論是目前的分布式數(shù)據(jù)庫系統(tǒng)還是傳統(tǒng)的集中式數(shù)據(jù)庫系統(tǒng),其查詢策略都是基于執(zhí)行查詢的預(yù)期代價的,其不同之處在于具體查詢代價的構(gòu)成是不盡相同的。在傳統(tǒng)的集中式數(shù)據(jù)庫系統(tǒng)中,系統(tǒng)往往選擇運行在某臺計算機上,因此查詢的代價構(gòu)成是CPU+I/O,然而在基于分布式的數(shù)據(jù)庫系統(tǒng)中,由于數(shù)據(jù)查詢需要在站點之間進行通信,因此其查詢代價除去基本的CPU+I/O,還需要考慮計算機網(wǎng)絡(luò)的數(shù)據(jù)傳輸代價。因此可以發(fā)現(xiàn),與集中式數(shù)據(jù)庫相比,分布式數(shù)據(jù)庫的查詢代價相對較高,而且其復(fù)雜程度也相應(yīng)增加。即便在目前的分布式數(shù)據(jù)庫查詢中也借鑒了集中式數(shù)據(jù)庫的策略,然而在查詢代價的規(guī)模和具體的優(yōu)化策略方面還是有著本質(zhì)區(qū)別的。在分布式數(shù)據(jù)庫的查詢優(yōu)化策略中,主要有兩個目標:一是實現(xiàn)查詢的總代價最小,分布式數(shù)據(jù)庫查詢總代價是由I/O代價、CUP代價以及數(shù)據(jù)通信代價共同組成的;二是實現(xiàn)查詢的響應(yīng)時間最短,分布式數(shù)據(jù)庫數(shù)據(jù)的冗余性與分布性加大了查詢的并行處理的可能性,假如每次查詢時間減少了,并且查詢處理還能夠并行,那么整體查詢處理的時間也就減少了。第一種目標一般認為網(wǎng)絡(luò)傳輸速度大大低于本地I/O速度與CUP速度,因此重點在于怎樣降低網(wǎng)絡(luò)通信代價以達到查詢優(yōu)化,而第二種目標一般認為增加了并行處理,通過減少局部代價也能夠優(yōu)化查詢。這兩個目標的實現(xiàn)對于分布式數(shù)據(jù)庫優(yōu)化具有顯著作用。根據(jù)對分布式數(shù)據(jù)庫的分析,其數(shù)據(jù)系統(tǒng)由若干臺計算機組成,因此就有可能實現(xiàn)查詢的并行處理,使得查詢的相應(yīng)時間可以大大縮短,進一步提升分布式數(shù)據(jù)庫的查詢速度。在基于分布式數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化策略中,主要包括查詢策略和局部處理兩個內(nèi)容,相比之下前者更為重要。在分布式數(shù)據(jù)庫系統(tǒng)中,其查詢策略的選擇將直接關(guān)系到整個分布式數(shù)據(jù)庫系統(tǒng)的性能。
2 分布式數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化策略
根據(jù)對分布式數(shù)據(jù)庫系統(tǒng)特點的分析,結(jié)合具體的數(shù)據(jù)庫查詢優(yōu)化策略的研究,基于分布式數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化策略主要有以下幾個方面。
1)合理設(shè)置索引提升查詢速度。數(shù)據(jù)索引是分布式數(shù)據(jù)庫系統(tǒng)中的重要數(shù)據(jù)結(jié)構(gòu),為了提高查詢速度,應(yīng)堅持一定的使用原則,其具體的使用原則包括:在未指定為外鍵但需要頻繁連接處設(shè)置索引,在不常用于連接的字段可以由DBMS自動生成索引;在需要頻繁進行排序和分組操作的列設(shè)置索引;在排序列數(shù)較多時可以設(shè)置復(fù)合索引??偟膩碇v,在缺省狀態(tài)下索引設(shè)置為非聚集類型,但有時候它并非最合理的,合理化的索引類型需要以對查詢類型的分析為基礎(chǔ),例如,出現(xiàn)大量重復(fù)值時應(yīng)考慮建立聚集索引,時常同時存取多列且含有重復(fù)值時可建立復(fù)合索引,復(fù)合索引必須盡可能使關(guān)鍵查詢形成索引覆蓋。
2)盡可能的避免排序或者對排序進行精簡。應(yīng)該盡可能避免對大型數(shù)表進行排序操作,在通過索引可以依照一定的次數(shù)輸出時就可以有效的避免排序操作,有效的提高數(shù)據(jù)查詢的速度。可以通過適當增加索引的方法降低排序操作,同時可以對數(shù)據(jù)表進行適當?shù)暮喜⒉僮鳌T跓o法避免排序的情況下,應(yīng)當試圖簡化它,通過縮小排序的范圍,盡可能的對排序操作進行簡化。
3)避免對大型數(shù)據(jù)表的順序存取操作。在分布式數(shù)據(jù)庫查詢過程中,嵌套查詢的順序存取對于數(shù)據(jù)查詢效率有著非常重要的影響,會大大降低數(shù)據(jù)查詢的速度,因此可以通過對存在連接的列建立索引的方法避免對大型數(shù)據(jù)表進行順序存取操作,另外還能利用索引路徑處理查詢,采用并集以避免順序存取。
4)通過臨時表加快數(shù)據(jù)查詢速度。可以通過將數(shù)據(jù)表的子集進行排序并且構(gòu)建相應(yīng)的臨時數(shù)據(jù)表,提升數(shù)據(jù)查詢的效率。臨時表的行數(shù)明顯少于主表,因此可以降低I/O代價,大大降低查詢操作的工作量。通過構(gòu)建臨時表能夠有效的避免進行重復(fù)排序操作,同時還可以降低優(yōu)化器操作。
5)避免困難的正規(guī)表達式和相關(guān)子查詢,減少查詢嵌套層次,提高查詢的效率,以免當主查詢中的列值在改變之后,子查詢又要再一次進行查詢,以節(jié)約查詢時間,同時避免非開始的子串。
3 總結(jié)
隨著計算機和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,基于計算機網(wǎng)絡(luò)的分布式數(shù)據(jù)庫系統(tǒng)也得到越來越多的應(yīng)用。分布式數(shù)據(jù)庫查詢優(yōu)化策略的好壞直接關(guān)系到整個數(shù)據(jù)庫系統(tǒng)的性能,因此需要根據(jù)實際需求,不斷推進數(shù)據(jù)查詢優(yōu)化策略的完善。
參考文獻
[1]劉放美,王猛.分布式查詢優(yōu)化算法及對SDD-1算法的改進[J].科技廣場,2005(02).
[2]張均東.分布式網(wǎng)絡(luò)系統(tǒng)中的數(shù)據(jù)訪問設(shè)計與優(yōu)化.大連海事大學(xué).
[3]王意潔.面向?qū)ο蟮臄?shù)據(jù)庫并行查詢優(yōu)化處理[J].計算機科學(xué),2000(02).
[4]金正淑.分布式數(shù)據(jù)庫系統(tǒng)中的查詢優(yōu)化[J].東北電力學(xué)院,2003(10).endprint