目前,數(shù)據(jù)庫管理系統(tǒng)已經(jīng)成為數(shù)據(jù)庫技術(shù)中的核心技術(shù),同時也是信息化建設(shè)中應(yīng)用最廣泛的軟件。數(shù)據(jù)庫管理系統(tǒng)經(jīng)過幾個階段的發(fā)展,已經(jīng)在商業(yè)領(lǐng)域得到了迅速和廣泛的應(yīng)用。廣泛的應(yīng)用領(lǐng)域為數(shù)據(jù)庫技術(shù)的發(fā)展和不斷進步提供了發(fā)展的原動力,如今的數(shù)據(jù)庫管理技術(shù)呈現(xiàn)出標準化、網(wǎng)絡(luò)化、大型化和智能化的趨勢。
【摘要】目前,數(shù)據(jù)庫管理系統(tǒng)已經(jīng)成為數(shù)據(jù)庫技術(shù)中的核心技術(shù),同時也是信息化建設(shè)中應(yīng)用最廣泛的軟件。如今的數(shù)據(jù)庫管理技術(shù)呈現(xiàn)出標準化、網(wǎng)絡(luò)化、大型化和智能化的趨勢。國外數(shù)據(jù)庫管理系統(tǒng)由于研究的時間比較早,其技術(shù)比較先進。我國雖然也自主研發(fā)了一些數(shù)據(jù)庫管理系統(tǒng),但是和國外的產(chǎn)品相比還有一定的差距。本文以國產(chǎn)數(shù)據(jù)庫管理系統(tǒng)OSCAR為例,重點闡述了查詢優(yōu)化的一些關(guān)鍵技術(shù)和具體實現(xiàn)方法。
【關(guān)鍵詞】數(shù)據(jù)庫管理系統(tǒng),查詢優(yōu)化,選擇性因子,關(guān)鍵技術(shù)
1引言
我國從宏觀政策方面也給數(shù)據(jù)庫管理系統(tǒng)一定的扶持,例如國家的863計劃就專門設(shè)立了“數(shù)據(jù)庫管理系統(tǒng)及其應(yīng)用”。本文以國產(chǎn)數(shù)據(jù)庫管理系統(tǒng)OSCAR為例,重點闡述了查詢優(yōu)化的一些關(guān)鍵技術(shù)和具體實現(xiàn)方法。
2查詢優(yōu)化關(guān)鍵技術(shù)
2.1查詢優(yōu)化的一般準則
查詢優(yōu)化的一般準則能改善一定程度的查詢效率,但是并不是改善程度最好,策略最好的。查詢優(yōu)化的一般準則如表1所示。
2.2查詢優(yōu)化的規(guī)則系統(tǒng)
神州OSCAR數(shù)據(jù)庫管理系統(tǒng),應(yīng)用范圍廣泛,該數(shù)據(jù)庫主要基于Client/Server的結(jié)構(gòu),該體系結(jié)構(gòu)又分為物理結(jié)構(gòu)、邏輯結(jié)構(gòu)、進程和內(nèi)存結(jié)構(gòu)四個方面。同時OSCAR數(shù)據(jù)庫管理系統(tǒng)具有強大的規(guī)則系統(tǒng),該規(guī)則系統(tǒng)可以實現(xiàn)不明確試圖和試圖的更新。例如位于分析器和優(yōu)化器之間的重寫系統(tǒng),其作用是分析傳回的用戶查詢信息。當(dāng)重寫規(guī)則被定義之后,重寫系統(tǒng)將對傳回的用戶查詢進行內(nèi)部操作。
2.3查詢優(yōu)化預(yù)處理
查詢優(yōu)化預(yù)處理是在真正的優(yōu)化處理之前進行的操作,主要是為了進行更加高效地查詢規(guī)劃,查詢預(yù)處理包括對目標列的預(yù)處理、條件表達式的預(yù)處理和對集合操作的預(yù)處理。例如對目標列的預(yù)處理首先要補全目標列,然后需要確保表定義中的順序和查詢樹的順序一致。對條件的預(yù)處理需要把條件表達式需要把NOT下推或盡可能去掉NOT,或者把條件表達式轉(zhuǎn)換成析取范式或者合取范式。對集合的預(yù)處理操作又可分為Except、Union和Intersect等。
2.4查詢優(yōu)化的邏輯優(yōu)化
邏輯優(yōu)化的完成主要依靠索引來完成,主要是進行物理上的優(yōu)化過程,從而使用邏輯優(yōu)化來完成查詢的計算過程。邏輯優(yōu)化主要包括兩個方面。
“AND”的優(yōu)化過程。在進行優(yōu)化時第一步是要找出含有“AND”的邏輯表達式,然后查詢是否存在可以使用索引的子查詢表達式,如果不存在則采用掃描的方式進行邏輯運算。如果存在可以使用索引的子查詢表達式,就需要先計算中查詢表達式,最后利用查詢表達式的運算結(jié)果計算其余的查詢表達式。
“OR”的優(yōu)化過程。“OR”的優(yōu)化過程和“AND”的優(yōu)化過程基本思路一致,都需要在子查詢表達式中找出是否存在可以使用的索引。如果不存在可以使用的索引,當(dāng)子查詢表達式存在多個時,就要調(diào)整子查詢表達式的運算順序,從而得到中間結(jié)果,把中間結(jié)果最后進行“或”計算后得到最后的計算結(jié)果。如果存在可以使用的索引,就需要使用索引得到中間計算結(jié)果。
3實現(xiàn)數(shù)據(jù)庫管理系統(tǒng)查詢優(yōu)化的算法
算法是實現(xiàn)數(shù)據(jù)庫管理系統(tǒng)查詢優(yōu)化的基礎(chǔ)和關(guān)鍵,目前成熟的算法也很多,不同的算法查詢優(yōu)化的效果也更不相同,本文重點介紹兩種。3.1存取方法和存儲路徑分析
查詢優(yōu)化器的一個重要功能就是如果選擇檢索數(shù)據(jù),然后構(gòu)造良好的執(zhí)行計劃。在OSCAR數(shù)據(jù)庫管理系統(tǒng)中主要采用下面三種存取方法和存儲路徑。
順序掃描。順序掃描需要讀取信息表中全部元組,檢查每一個元組是否滿足WHERE的條件,對于任意一個信息表,需要從頭到尾的按照順序掃描一遍,需要花費的時間相對較長。為了提高掃描效率,可以使用多塊讀取的方式。
索引掃描。利用建立的多列或單列索引,可以提高檢索的效率。當(dāng)語句訪問到的索引是唯一時,數(shù)據(jù)庫管理系統(tǒng)將直接而非表中讀出索引列的數(shù)值。根據(jù)索引掃描方式的不同,又可分為唯一(Unique)和范圍(Range)兩種類型。
利用TID進行存取。利用TID進行掃描是查找單個記錄最快捷的方法,首先給數(shù)據(jù)庫中的每一個元組規(guī)定唯一的一個TID,每一個元組的TID包含兩個方面的信息,分別是元組在數(shù)據(jù)塊中的位置和數(shù)據(jù)文件,然后利用這個唯一的TID檢索表。
3.2SYSTEM-R代價估算算法分析
SYSTEM-R是代價估算算法的一種,該算法主要是從CPU和I/O的開銷上進行考慮的,SYSTEM-R代價估算法的數(shù)學(xué)計算公式如下:
Cost=P+W*T(公式1-1)
上述公式中,P主要代表I/O的開銷。T代表了CPU的開銷,其中W是一個權(quán)重,表示在一次查詢中更重視CPU的開銷還是I/O的開銷。
對于每一次查詢優(yōu)化時的索引,P和W的數(shù)值還要受到選擇性因子的限制,選擇性因子由于是函數(shù),具有多種可能性,在SYSTEM-R是代價估算算法中,選擇性因子被固化在表2中。
4數(shù)據(jù)庫管理系統(tǒng)中查詢優(yōu)化的實現(xiàn)
4.1性能設(shè)計
在進行查詢優(yōu)化時可以發(fā)現(xiàn),一些語句僅僅是常數(shù)不同,它們具有相同的查詢語句。為了提高數(shù)據(jù)庫查詢的效率,當(dāng)把常數(shù)指定到一定范圍時,就可以把具有相同模式的查詢語句進行常數(shù)替換。從而實現(xiàn)相同模式的查詢語句僅僅做一次語法分析,從而節(jié)省了查詢時間,為了查詢優(yōu)化,首先需要對查詢語句進行緩沖,該部分內(nèi)容又可分為提取查詢計劃和保持新的查詢計劃兩個步驟進行。
4.2體系結(jié)構(gòu)設(shè)計
SPC的信息流圖如圖1所示。
從圖1可以看出,各個模塊直接的信息交換是依靠參數(shù)實現(xiàn)的,網(wǎng)絡(luò)通信庫相對與SPC查詢緩沖模塊而言是數(shù)據(jù)輸入模塊,當(dāng)SPC查詢緩沖模塊發(fā)出查詢計劃時,查詢執(zhí)行模塊就要進行查詢。
4.3關(guān)鍵算法
為了提高查詢效率,優(yōu)化查詢結(jié)果,本文采用hash函數(shù)保持語法數(shù)和查詢語句,如果hash函數(shù)設(shè)計不好,會造成一些沖突,從而降低hash表的效率。本文設(shè)計的一個經(jīng)驗字符串的hash函數(shù)如下:
unsignedinthash(char*str)
{
Registerunsignedinth;
Registerunsignedchar*p;
for(h=0,p=(Registerunsignedchar*)str;*p;p++)
h=*p-h+h<<5;
returnh;
}
實踐證明,使用該字符串hash函數(shù)效能較好,效率較高。
5結(jié)束語
為了適應(yīng)飛速發(fā)展的業(yè)務(wù)需求,未來的數(shù)據(jù)庫管理系統(tǒng)需要更強大的功能,更快的運行速度,為了使我國自主研發(fā)的數(shù)據(jù)庫管理系統(tǒng)具有更好的性能,能夠縮短和外國主流商業(yè)數(shù)據(jù)庫的差距,需要我們從核心技術(shù)出發(fā),早日開發(fā)出國際一流的產(chǎn)品。
參考文獻
[1]張杰敏.有關(guān)高級數(shù)據(jù)庫系統(tǒng)中的并發(fā)控制問題[J].華北工學(xué)院學(xué)報,2012(03).
[2]趙艷平.數(shù)據(jù)庫管理系統(tǒng)的組成與發(fā)展[J].科技信息.2011(07).
轉(zhuǎn)載請注明來自:http://www.jinnzone.com/jisuanjiyingyonglw/32430.html