申超群
河南機電職業(yè)學(xué)院,河南鄭州 450000
關(guān)于數(shù)據(jù)庫管理系統(tǒng)中的查詢優(yōu)化設(shè)計研究
申超群
河南機電職業(yè)學(xué)院,河南鄭州450000
數(shù)據(jù)庫管理系統(tǒng)應(yīng)用非常廣泛,尤其在信息化建設(shè)中的應(yīng)用尤為突出。隨著科技的進(jìn)步,目前的數(shù)據(jù)庫發(fā)展呈現(xiàn)出智能化、網(wǎng)絡(luò)化、大型化以及標(biāo)準(zhǔn)化的特點,這也是未來的發(fā)展趨勢,數(shù)據(jù)庫系統(tǒng)的發(fā)展不僅帶動了我國科技的發(fā)展,更加帶動了我國經(jīng)濟(jì)的發(fā)展。國外在數(shù)據(jù)庫的研究方面著手較早,研究的時間較長,所以在技術(shù)方面遠(yuǎn)比我們國內(nèi)要先進(jìn)。數(shù)據(jù)庫管理系統(tǒng)國內(nèi)也有研究,但是相比于國外依然存在一定的差距。本文將國產(chǎn)數(shù)據(jù)庫管理系統(tǒng)OSCAR作為研究對象,并對查詢優(yōu)化一些關(guān)鍵技術(shù)進(jìn)行分析和研究,最后提出具體實現(xiàn)方案,旨在為我國相關(guān)領(lǐng)域提供參考和支持。
數(shù)據(jù)庫管理系統(tǒng);查詢及優(yōu)化;選擇性因子;核心技術(shù)
數(shù)據(jù)庫管理系統(tǒng)應(yīng)用非常廣泛,尤其在信息化建設(shè)中的應(yīng)用尤為突出。數(shù)據(jù)庫系統(tǒng)經(jīng)過長期的發(fā)展,在商業(yè)領(lǐng)域中的應(yīng)用非常廣泛。就我國而言,數(shù)據(jù)庫管理系統(tǒng)一直受到國家宏觀政策的扶持,如我國在863計劃當(dāng)中,根據(jù)實際情況設(shè)置了“數(shù)據(jù)庫管理系統(tǒng)及其應(yīng)用”。隨著社會經(jīng)濟(jì)不斷發(fā)展,各領(lǐng)域?qū)夹g(shù)提出了更高要求。因此加強對該問題的研究具有非常重要的現(xiàn)實意義,能夠幫助相關(guān)主體了解更多關(guān)鍵技術(shù),并掌握其實現(xiàn)方法。
1.1查詢優(yōu)化的一般準(zhǔn)則
查詢的效率在一定程度上可以通過查詢優(yōu)化的方法得到改善,然而無論是從策略上考慮,還是從改善程度方面考慮,這都不是最好的辦法。查詢優(yōu)化一般準(zhǔn)則主要有5個部分:準(zhǔn)則一,選擇運算盡可能優(yōu)先的進(jìn)行。這一準(zhǔn)則能夠在一定程度上節(jié)約時間成本。準(zhǔn)則二,針對實踐執(zhí)行及連接等進(jìn)行預(yù)處理,一般來說,在實踐中,預(yù)處理可以采取兩種方式,分排序合并及索引兩種連接。準(zhǔn)則三,將選擇運算及投影運算同時進(jìn)行。這一原則的遵循能夠減少對關(guān)系的重復(fù)掃描。準(zhǔn)則四,提取出公共子表達(dá)式。如果從外部讀入子表達(dá)式速度較快,可以將其作為公共表達(dá)式,以便提高表達(dá)有效性。準(zhǔn)則五,建立在笛卡爾積同基礎(chǔ)之上,重構(gòu)連接運算。在具體應(yīng)用過程中,借助上述準(zhǔn)則,能夠有效節(jié)省更多時間,毋庸置疑效率也就快了。
1.2查詢優(yōu)化規(guī)則系統(tǒng)
針對研究對象來說,其自身具有較為廣泛的應(yīng)用范圍。綜合來看,該系統(tǒng)Client/Server的結(jié)構(gòu)為基礎(chǔ)運行。整個體系結(jié)構(gòu)由內(nèi)存、邏輯及物理等部分構(gòu)成。該數(shù)據(jù)庫管理系統(tǒng)除了應(yīng)用廣泛之外在規(guī)則系統(tǒng)方面也相當(dāng)強大。規(guī)則系統(tǒng)的使用,不僅能夠?qū)崿F(xiàn)對不明確試圖的觀察,且能夠?qū)υ噲D進(jìn)行相應(yīng)的處理。比如重寫系統(tǒng),該系統(tǒng)存在于優(yōu)化器和分解器之間的,系統(tǒng)傳回的用戶查詢信息主要就是通過該系統(tǒng)來完成分析的。重寫規(guī)則后,系統(tǒng)能夠?qū)骰氐挠脩粼趦?nèi)部進(jìn)行相應(yīng)的操作,滿足用戶需求。
1.3查詢優(yōu)化預(yù)處理
一般在真正進(jìn)行優(yōu)化處理之前還有一項操作是需要完成的,那就是查詢優(yōu)化處理,這一處理放在這里的主要目的是讓查詢規(guī)劃的效果更高。具體的查詢優(yōu)化處理主要包括3個方面,對集合操作的預(yù)處理、對條件表達(dá)式的預(yù)處理和對目標(biāo)列的預(yù)處理。在進(jìn)行目標(biāo)列的預(yù)處理之前第一步要做的是將目標(biāo)列補充完全,同時還應(yīng)該保證查詢樹的順序同表定義中的順序保持一致性。在進(jìn)行條件的預(yù)處理之前應(yīng)該將條件表達(dá)式轉(zhuǎn)變成析取范式或者合取范式,也可以將條件表達(dá)式NOT下推或者是想辦法將NOT去除。在進(jìn)行集合的預(yù)處理還有很多分類,如Intersect、Union、Except等。
1.4查詢優(yōu)化的邏輯優(yōu)化
邏輯優(yōu)化其本質(zhì)是一個物理層次的優(yōu)化過程,主要是通過索引來進(jìn)行的,最后,在邏輯優(yōu)化基礎(chǔ)上,完成查詢計算全過程。邏輯優(yōu)化體現(xiàn)在兩個方面,一是“AND”;二是“OR”優(yōu)化過程。
“AND”的優(yōu)化過程。在進(jìn)行“AND”的優(yōu)化之前首先要完成的是將含有“AND”的邏輯表達(dá)式找出來,第二步要做的是通過查詢,以此來判斷我們能夠使用的子查詢表達(dá)式是否真實存在。如果沒有,可以應(yīng)用掃描模式完成邏輯運算。如果有,可以將索引的子查詢表達(dá)式應(yīng)用,將查詢表達(dá)式計算出來,并充分利用運算結(jié)果,計算出剩余查詢表達(dá)式。最終實現(xiàn)對整個邏輯的優(yōu)化目標(biāo)。
相比較來看,“OR”較“AND”比較來看,二者存在較強的一致性。詳細(xì)來說,兩種優(yōu)化過程必須要做的都是需要在子查詢表達(dá)式中找出是否存在可以使用的索引。若沒有,而有多個子查詢表達(dá)式的情況下,則為了得到中間結(jié)果,自查詢表達(dá)式運算順序需要經(jīng)過相應(yīng)的調(diào)整,并對中間結(jié)果進(jìn)行相應(yīng)的調(diào)整,最終才能夠獲取相應(yīng)的結(jié)果。若有,那么中間計算結(jié)果可以通過索引的運用來獲取。
在數(shù)據(jù)庫管理系統(tǒng)查詢優(yōu)化的實現(xiàn)過程中最基礎(chǔ)、最關(guān)鍵的就是算法。在實踐應(yīng)用過程中,使用的算法不同,那么對應(yīng)的查詢優(yōu)化結(jié)果也會有所差別,具有較強的針對性。本文主要從兩個方面進(jìn)行介紹。
2.1存取方法和存儲路徑分析
檢索數(shù)據(jù)的選擇和執(zhí)行計劃的構(gòu)造,建立在查詢優(yōu)化設(shè)備基礎(chǔ)之上。針對OSCAR系統(tǒng)來安,其一般有順序掃描、索引掃描以及利用TID進(jìn)行存取3種類型。
其中針對順序掃描來看,系統(tǒng)在運行中,會先對信息表中涉及的所有元組進(jìn)行相應(yīng)的處理,然后對每個元組進(jìn)行檢查,查看是否滿足WHERE條件。不僅如此,還需要對每個信息表進(jìn)行系統(tǒng)化掃描處理,基于此,全面掃描耗時相對較長。因此,為了能夠提高掃描有效性,我們可以采取多塊讀取方法,更快地獲取相應(yīng)的結(jié)果。而針對索引掃描而言,該類型掃描更多的是為了檢索有效性,采取對多列、單列索引的構(gòu)建。在語句訪問到索引具有唯一性時,系統(tǒng)可以直接將非表中的索引列數(shù)值讀取出來。根據(jù)掃描方式具有的差異性來看,在執(zhí)行中,可以采取唯一、范圍兩類。
利用TID進(jìn)行存取。在進(jìn)行單個記錄的查詢時,這種掃描方式是最方便和快捷的,第一步要做的是對數(shù)據(jù)庫中的每一個元組規(guī)定唯一的TID,再利用這個TID檢索表。其中每一個元組的TID的主要信息分為數(shù)據(jù)文件和元祖存在于數(shù)據(jù)庫中的具體位置兩方面。
2.2SYSTEM-R代價估算算法分析
SYSTEM-R是一種代價估算算法,CPU和I/O的開銷是這種算法考慮的重點,Cost=P+W*T公式是這種算法的數(shù)學(xué)表達(dá)式。其中W表示權(quán)重,P代表I/O開銷,而T 代表的是CPU的開銷。這個式子可以解釋為在一次的查詢中CPU和I/O的開銷的重視度問題。
P和W的數(shù)值在每一次的查詢優(yōu)化時的索引中都是不一樣的,其原因主要是選擇因子的存在。當(dāng)然我們在算法SYSTEM-R代價估算中,可以將其分為三種情況:其一,當(dāng)r.field=value時,而選擇因子為I/(定義在r.field上的索引表中的T);其二,當(dāng)r.field>value時,選擇因字固化為(r.field的最大值-value)/(r.field的最大值r.field的最小值);其三,當(dāng)r.field
3.1性能設(shè)計
查詢優(yōu)化是一項綜合性工作,很多語句之間的差異僅僅是常數(shù)變化,而查詢語句卻是一致的。因此出于提高數(shù)據(jù)庫查詢有效性的考慮,可以將常數(shù)指定到某一范圍當(dāng)中,針對具有同一查詢語句的語句進(jìn)行常數(shù)更換。而針對同一模式的語句,在實踐中,僅需要采取一次語法分析,便能夠節(jié)省很多實踐。在查詢優(yōu)化過程中,第一步要做的是緩沖查詢語句。其中不僅要獲取查詢對應(yīng)的計劃,且需要將新的查詢計劃保持好,以此來提高系統(tǒng)運行有效性。
3.2體系結(jié)構(gòu)設(shè)計
數(shù)據(jù)庫體系的機構(gòu)主要有3個環(huán)節(jié),第一環(huán)節(jié)包括網(wǎng)絡(luò)通信庫、查詢計劃優(yōu)化模塊和DBA命令處理模塊3個部分;第二環(huán)節(jié)是SPC查詢緩沖模塊;第三環(huán)節(jié)是查詢執(zhí)行模塊。每個環(huán)節(jié)中的模塊進(jìn)行信息交換都是通過參數(shù)來完成的,例如在SPC查詢緩沖模塊發(fā)出查詢計劃后,查詢執(zhí)行模塊將會進(jìn)入到運行模式當(dāng)中。
3.3關(guān)鍵算法
為了能夠進(jìn)一步提升查詢有效性,實現(xiàn)對查詢結(jié)果的調(diào)整和優(yōu)化。本文引入hash函數(shù),保持語法數(shù)、查詢語句。該函數(shù)更具靈活性,能夠直接與對應(yīng)的表保持一致。通過對實踐結(jié)果觀察能夠發(fā)現(xiàn),利用該字符串,不僅能夠促使該函數(shù)效能達(dá)到最佳狀態(tài),且查詢系統(tǒng)整體效率也得到了優(yōu)化。因此,可以使用hash函數(shù),以此來提高查詢有效性,為用戶提供更加優(yōu)質(zhì)的服務(wù)。
在業(yè)務(wù)需求顯示出越來越強勁的勢頭下,數(shù)據(jù)庫管理系統(tǒng)在未來的發(fā)展過程中必須要有更快的運行速度和更為強大的功能。雖然我國自主研發(fā)的數(shù)據(jù)庫管理系統(tǒng)與國外的差距依然很大,但是我們應(yīng)該從核心技術(shù)出發(fā),深入研究,盡可能縮小與國際一流水平之間的差距,甚至趕超國際一流水平,逐漸使數(shù)據(jù)庫管理系統(tǒng)世界化、全球化。
[1]張杰敏.有關(guān)高級數(shù)據(jù)庫系統(tǒng)中的并發(fā)控制問題[J].華北工學(xué)院學(xué)報,2012(3):204-206.
[2]趙艷平.數(shù)據(jù)庫管理系統(tǒng)的組成與發(fā)展[J].科技信息,2011(7):73.
TP3
A
1674-6708(2016)166-0092-02
河南省教育廳科學(xué)技術(shù)研究重點項目《基于交互教學(xué)軟件的職業(yè)教育教學(xué)研究》(編號:14B880028)。
申超群,研究方向為控制及圖像處理。