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