賈欽
摘要
數(shù)據(jù)庫(kù)管理系統(tǒng)作為系統(tǒng)軟件的數(shù)據(jù)處理中心,同時(shí)也是現(xiàn)代信息化建設(shè)中最廣泛的應(yīng)用,能夠研發(fā)出一套國(guó)產(chǎn)數(shù)據(jù)軟件一直是我國(guó)的目標(biāo)。而查詢優(yōu)化作為該系統(tǒng)中的一個(gè)重要組成部分,本文通過(guò)對(duì)OSCAR作為研究的內(nèi)容,通過(guò)對(duì)查詢優(yōu)化的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行重點(diǎn)闡述。
【關(guān)鍵詞】數(shù)據(jù)庫(kù)管理系統(tǒng) 查詢優(yōu)化 設(shè)計(jì)措施
1 查詢優(yōu)化關(guān)鍵技術(shù)
1.1 查詢優(yōu)化的基本準(zhǔn)則
查詢優(yōu)化的基本準(zhǔn)則能在一定的程度上對(duì)查詢效率進(jìn)行改善,但這種改善的程度和策略都不是最好的。而關(guān)于查詢優(yōu)化的基本準(zhǔn)則具體如表1。
1.2 查詢優(yōu)化預(yù)處理環(huán)節(jié)
查詢優(yōu)化預(yù)處理即對(duì)目標(biāo)列、條件公式和信息集合操作進(jìn)行的預(yù)處理,其主要的目的就是想把查詢系統(tǒng)進(jìn)行一個(gè)更為高效率的規(guī)劃,以達(dá)到真正優(yōu)化的效果。就比如對(duì)目標(biāo)列的預(yù)處理,就是要通過(guò)查詢優(yōu)化的預(yù)處理把斷缺的目標(biāo)列進(jìn)行補(bǔ)充完整,以確保目標(biāo)列中的定義順序和查詢系統(tǒng)中的順序一樣。而對(duì)于條件公式進(jìn)行預(yù)處理,要把條件表達(dá)式中的NOT進(jìn)行往下推算,或者是把NOT去掉,把這個(gè)條件的表達(dá)式進(jìn)行有效的轉(zhuǎn)換,變成可取性和合理化的表達(dá)式。針對(duì)集合信息的預(yù)處理,其主要是Except和Intersect等操作。
1.3 查詢優(yōu)化的邏輯性優(yōu)化
查詢優(yōu)化系統(tǒng)中的邏輯優(yōu)化主要是依靠于索引來(lái)進(jìn)行的,通過(guò)一個(gè)物理上的邏輯優(yōu)化來(lái)完成查詢過(guò)程中的運(yùn)算。該邏輯的優(yōu)化過(guò)程主要包括兩個(gè)方面,一是在優(yōu)化的過(guò)程中要能找到有“AND”的表達(dá)式,然后通過(guò)索引的表達(dá)式進(jìn)行查詢,如果沒(méi)有該表達(dá)式,就可以用掃描的形式進(jìn)行一個(gè)邏輯性的運(yùn)算。如果用索引的表達(dá)式可以查詢出來(lái),就先使用這個(gè)查詢的表達(dá)式,最后再利用該表達(dá)式的運(yùn)算結(jié)果進(jìn)行對(duì)其他表達(dá)式的查詢。二是采用“OR”形式的表達(dá)式優(yōu)化過(guò)程,這個(gè)查詢優(yōu)化的邏輯思路與“AND”相似,都是先通過(guò)索引的查詢方式確認(rèn)是否存在有可用的表達(dá)式。如果沒(méi)有且當(dāng)存在有很多個(gè)子表達(dá)式時(shí),就通過(guò)對(duì)這些子表達(dá)式的順序調(diào)整,進(jìn)而達(dá)到運(yùn)算的結(jié)果。
2 實(shí)現(xiàn)系統(tǒng)內(nèi)查詢優(yōu)化的算法
想要實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理系統(tǒng)的查詢優(yōu)化,首要的任務(wù)就是實(shí)現(xiàn)算法的優(yōu)化。根據(jù)目前知道的一些成熟的算法,我們可以知道對(duì)不同算法的優(yōu)化,其取得的效果也會(huì)不同。而在這篇文章里,主要介紹兩種。
2.1 存取方式和存儲(chǔ)路徑剖析
想要實(shí)現(xiàn)對(duì)查詢優(yōu)化里面的算法進(jìn)行優(yōu)化,其中最主要的一個(gè)功能就是對(duì)檢索數(shù)據(jù)的選擇,根據(jù)這個(gè)選擇設(shè)計(jì)出一個(gè)好的執(zhí)行方案。在OSCAR數(shù)據(jù)庫(kù)管理系統(tǒng)中,采用的主要是三種存取的方法和存儲(chǔ)的路徑。第一個(gè)是順序掃描,即按照順序掃描出需要讀取的信息里面的全部元素,檢測(cè)是否每個(gè)元素里面都達(dá)到滿足“WHERE”的要求。但是如果對(duì)每一個(gè)的內(nèi)容信息表都要進(jìn)行掃描,花費(fèi)的時(shí)間就會(huì)較多,掃描的運(yùn)作效率就降低了。為了能夠更好更快的對(duì)信息元素的讀取,所有就有了第二種,索引掃描。索引掃描即通過(guò)建立多個(gè)或單個(gè)的索引信息。當(dāng)進(jìn)行語(yǔ)句的訪問(wèn)且是唯一的索引時(shí),數(shù)據(jù)庫(kù)管理系統(tǒng)就可以直接的讀取出數(shù)據(jù)信息。第三種就是利用TID進(jìn)行存取,TID是進(jìn)行單個(gè)查找最快捷的方式。
2.2 利用代價(jià)佑算算法分析
利用代價(jià)估算算法進(jìn)行查詢優(yōu)化的分析,其中SYSTEM-R是最為常用的一種方法。這種估算算法是從CPU的角度上進(jìn)行分析和考慮的,在進(jìn)行每一次計(jì)算的時(shí)候都會(huì)更注重CPU的消耗。在對(duì)每一次的查詢優(yōu)化的索引時(shí),因?yàn)闀?huì)受到一些選擇性因素的限制,所以就會(huì)導(dǎo)致多種可能性的出現(xiàn)。比如下面:
訪問(wèn)磁盤(pán)1次所需的代價(jià)可表示為:
CI/O=DO+xD1
其中:x存取數(shù)據(jù)的大小,以字節(jié)表示
DO與x無(wú)關(guān)的I/O代價(jià),包括尋道時(shí)間和等待時(shí)間
D1每個(gè)字節(jié)所需的傳輸時(shí)間
一般D0>>xD1故
I/O代價(jià)=I/O次數(shù)×D0
3 數(shù)據(jù)庫(kù)管理系統(tǒng)中查詢優(yōu)化的實(shí)現(xiàn)
3.1 提高性能設(shè)計(jì)
在對(duì)查詢優(yōu)化進(jìn)行優(yōu)化的時(shí)候,我們可以發(fā)現(xiàn),一些語(yǔ)句僅僅是因?yàn)檎Z(yǔ)句的常數(shù)不同,但是他們具有一耳光相同的查詢語(yǔ)句。為了能夠提高數(shù)據(jù)庫(kù)的查詢效率,可以把常數(shù)設(shè)置到一定的范圍,把具有相同模式的查詢語(yǔ)句進(jìn)行一個(gè)常數(shù)間的相互替換。這樣可以有效的實(shí)現(xiàn)相同模式的查詢語(yǔ)句就只用做一次的語(yǔ)法分析,進(jìn)而達(dá)到節(jié)約時(shí)間的效果。而為了能夠做到查詢的優(yōu)化,第一步就是先要對(duì)查詢中的語(yǔ)句進(jìn)行一個(gè)有效的緩解,通過(guò)提取語(yǔ)句中的部分內(nèi)容而進(jìn)行查詢計(jì)劃。
3.2 提升關(guān)鍵算法
為了能夠提高數(shù)據(jù)庫(kù)管理的查詢優(yōu)化水平,優(yōu)化查詢的結(jié)果。可以通過(guò)采用hash的函數(shù)形式以保持語(yǔ)法和查詢的語(yǔ)句。當(dāng)然,如果hash函數(shù)雞舍得不夠合理化,那么勢(shì)必就會(huì)造成一定的沖突,最后會(huì)降低hash的效率,也提升不了關(guān)鍵算法的水平。
4 結(jié)束語(yǔ)
隨著我國(guó)經(jīng)濟(jì)的快速發(fā)展,經(jīng)濟(jì)業(yè)務(wù)的不斷增多,對(duì)未來(lái)的數(shù)據(jù)庫(kù)管理的要求性能也更大,對(duì)系統(tǒng)的運(yùn)行速度要求也更大。為了能夠更好的促進(jìn)我國(guó)對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)研發(fā)的進(jìn)程,能夠更快更有效的縮短我國(guó)與國(guó)外數(shù)據(jù)庫(kù)管理技術(shù)的差距,這就需要我們要從最核心的設(shè)計(jì)出發(fā),以便更快地研發(fā)出一款具有國(guó)際性標(biāo)注的數(shù)據(jù)庫(kù)管理產(chǎn)品。
參考文獻(xiàn)
[1]張杰敏.有關(guān)高級(jí)數(shù)據(jù)庫(kù)系統(tǒng)中的并發(fā)控制問(wèn)題[J].華北工學(xué)院學(xué)報(bào),2012(03):22-30.
[2]趙艷平.數(shù)據(jù)庫(kù)管理系統(tǒng)的組成與發(fā)展[J].科技信息,2011(07):45-56.