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