◆劉 鵬
基于關(guān)系數(shù)據(jù)庫的查詢優(yōu)化研究
◆劉 鵬
(廣東省機(jī)械高級技工學(xué)校 廣東 510450)
數(shù)據(jù)庫技術(shù)在行業(yè)范圍內(nèi)的應(yīng)用越來越廣泛,為數(shù)據(jù)的整理與使用提供了很好的途徑。在數(shù)據(jù)庫的所有技術(shù)組成之中,查詢功能是最重要的技術(shù)組成部分,是關(guān)鍵的技術(shù)環(huán)節(jié),也是最受人們青睞的技術(shù)功能。關(guān)系型數(shù)據(jù)庫是數(shù)據(jù)庫組成中的最主要的類型。針對數(shù)據(jù)庫的查詢優(yōu)化也是提升數(shù)據(jù)庫功能效率的主要途徑。本文對關(guān)系數(shù)據(jù)庫的查詢優(yōu)化進(jìn)行了深入的探究,希望對讀者有所幫助。
關(guān)系數(shù)據(jù)庫;查詢優(yōu)化;研究
國民經(jīng)濟(jì)發(fā)展迅速,人民生活水平得到了有效的提高,科學(xué)技術(shù)發(fā)展迅速,知識信息以驚人的速度更新著,這種信息發(fā)展趨勢給人們信息數(shù)據(jù)的更新與存儲工作帶來了一系列的挑戰(zhàn)。針對這種信息發(fā)展趨勢,人們普遍采用數(shù)據(jù)庫技術(shù)來進(jìn)行數(shù)據(jù)的操作與整理,數(shù)據(jù)庫技術(shù)在眾多行業(yè)部門里普及度越來越高。與此同時信息背后帶來的價值也越來越受到人們的重視,在數(shù)據(jù)庫中對信息最主要的操作是查詢,數(shù)據(jù)查詢效率的提升可以有效地提升各大信息平臺的運行效率,對數(shù)據(jù)查詢的優(yōu)化是數(shù)據(jù)庫研發(fā)部門人員最為關(guān)注的問題,本文針對關(guān)系數(shù)據(jù)庫的查詢優(yōu)化進(jìn)行了深入的研究,希望對讀者有所幫助。
查詢是數(shù)據(jù)庫最主要的操作環(huán)節(jié),關(guān)系數(shù)據(jù)庫作為數(shù)據(jù)庫的重要類型,自然也不能例外,關(guān)系數(shù)據(jù)庫針對數(shù)據(jù)用戶進(jìn)行的數(shù)據(jù)應(yīng)用采取的具體操作過程包括四個方面。
首先是查詢分析操作,在數(shù)據(jù)庫的查詢過程中,首先要做的是辨別查詢用戶輸入查詢指令的格式準(zhǔn)確性,對于不符合查詢指令格式要求的查詢語句則不能獲取查詢數(shù)據(jù)。在查詢指令的分析過程中,主要涉及到的是語法與句法兩方面的分析,從而確保指令的規(guī)范性。然后通過查詢代碼的生成,來實現(xiàn)查詢查詢結(jié)果的獲取,最終完成查詢執(zhí)行過程。在查詢重寫這方面,需要根據(jù)SQL數(shù)據(jù)的變化情況,逐步減少其中中間結(jié)果的變化情況,并對查詢目標(biāo)進(jìn)行設(shè)定。其優(yōu)化結(jié)構(gòu)圖如下圖1所示:
圖1 優(yōu)化結(jié)構(gòu)圖
在整體的查詢過程中,我們可以舉例進(jìn)行實踐,讓整體的查詢轉(zhuǎn)化效果更為良好、精確。在查詢轉(zhuǎn)化的過程中,需要根據(jù)不同的數(shù)據(jù)進(jìn)行較為精確的計算。同時,在查詢的過程中,需要遵循SELECT語句。
關(guān)系表達(dá)式的優(yōu)化對于查詢過程的優(yōu)化作用是十分明顯,查詢過程的代數(shù)式的變換對于查詢結(jié)果的優(yōu)化作用也是十分明顯,因此不僅要注意代數(shù)式的變換,同時還要注意查詢過程中代數(shù)式運算順序的合理安排,通過關(guān)系表達(dá)式的運算程序以及表達(dá)式內(nèi)容的優(yōu)化來實現(xiàn)查詢效果的優(yōu)化。在代數(shù)表達(dá)式的等價優(yōu)化過程中應(yīng)該遵循以下原則,首先應(yīng)該堅持選擇運算優(yōu)先的原則,從而實現(xiàn)對數(shù)據(jù)元組的仔細(xì)甄別,選取數(shù)據(jù)處理量,從而實現(xiàn)數(shù)據(jù)處理量的有效控制。同時對于多個選擇運算或者多個投影運算應(yīng)該堅持批量化進(jìn)行的原則,這樣有利于查詢次數(shù)的降低以及查詢效率的提升。需要注意的是投影運算除了可以和選擇運算同時進(jìn)行,還可以和雙目運算有效的結(jié)合在一起,從而可以有效的減少投影表的次數(shù)。除了以上方式,將選擇運算和笛卡爾積運算結(jié)合在一起也是一種有效的優(yōu)化方式。同時還需要對中間運算結(jié)果進(jìn)行有效的簡化。我們可以從實例出發(fā)來看關(guān)系表達(dá)優(yōu)化的整體情況。
在表達(dá)式的整體操作時,首先需要對模塊計算公式進(jìn)行較為明確的數(shù)據(jù)評估。估算公式要考慮幾個重要的輸入?yún)?shù),例如緩沖池的大小、關(guān)系或索引的大小、有關(guān)每個操作本身的代價估計。遵循的公式如下:
(1)投影大小的估計:投影為每個變元元組產(chǎn)生結(jié)果數(shù)據(jù),輸出大小取決于元組的長度。
(2)選擇大小的估計當(dāng)s=Cas(R),其中A是R的屬性,C是一個常量,則:
T(S)=T(R)lV(R,A);
當(dāng)s=}a T(S)=T(R)l3; 當(dāng)sonA }c (R),則: T(S)=T }R)或T}S)=TAR)(V(R,A)一1)/V (R ,A). 除了關(guān)系表達(dá)式的優(yōu)化,還需要進(jìn)行查詢策略的有效使用。 (1)首先應(yīng)該合理有效的使用索引:索引的使用使得數(shù)據(jù)庫用戶的數(shù)據(jù)存儲效果得到了有效的改善,索引針對數(shù)據(jù)庫中數(shù)據(jù)的存儲屬于分散式的,通過索引的使用使得數(shù)據(jù)庫的數(shù)據(jù)存儲查詢得到了很大的優(yōu)化,索引的使用也使得數(shù)據(jù)文件的磁盤頻率大為降低。數(shù)據(jù)庫索引的創(chuàng)建有其自身的原則、步驟:首先要對字段進(jìn)行連接次數(shù)的判斷,從而確定索引的創(chuàng)建方式,選擇是自動生成還是手動創(chuàng)建,尤其是對于那些頻繁使用的列,一定要進(jìn)行索引的創(chuàng)建來實現(xiàn)查詢的優(yōu)化。同時也要注意索引創(chuàng)建的合理性,避免過多地創(chuàng)建不必要的索引。同時針對多個待排序的列,可以采取建立復(fù)合索引的形式。 (2)然后是視圖的使用和存儲過程的把握:視圖可以有效的簡化數(shù)據(jù)查詢的過程,視圖作為一個虛擬表,實現(xiàn)了物理數(shù)據(jù)的簡化,對于一些經(jīng)常使用的查詢可以進(jìn)行視圖的整合,來實現(xiàn)視圖查詢的簡化,從而實現(xiàn)了查詢范圍的有效控制以及查詢效率的有效提升。自定義存儲過程也為用戶的存儲需求提供了有效的途徑。自定義存儲過程的優(yōu)化體現(xiàn)在:可以對存儲過程進(jìn)行有效的分析與優(yōu)化,與此同時在已有的存儲過程之上,無需進(jìn)行新存儲程序的重復(fù)輸入分析與優(yōu)化,因此將原有的查詢以存儲過程的方式進(jìn)行存儲,可以有效的提升查詢的效率。 (3)最后是數(shù)據(jù)冗余的合理避免:通過數(shù)據(jù)庫的合理高效設(shè)計,可以很大程度上避免冗余數(shù)據(jù)的產(chǎn)生,從而實現(xiàn)存儲結(jié)構(gòu)的優(yōu)化。 蟻群優(yōu)化原理的歷史較為久遠(yuǎn),其基本理念在于對蟻群覓食的研究,當(dāng)一只螞蟻發(fā)現(xiàn)食物信息的時候就可以在蟻群內(nèi)大范圍的傳播,從而實現(xiàn)蟻群對食物的尋覓與索取。應(yīng)用該原理實現(xiàn)了蟻群優(yōu)化算法的研發(fā)。通過該算法實現(xiàn)了對簡單信息的研發(fā)與應(yīng)用,從而實現(xiàn)了對實際問題解決辦法的創(chuàng)新與優(yōu)化。經(jīng)過進(jìn)一步的優(yōu)化,螞蟻算法發(fā)展成為螞蟻優(yōu)化算法,蟻群優(yōu)化算法在求解關(guān)鍵詞查詢的應(yīng)用原理可以概括為覆蓋清除法,通過查詢范圍不斷縮小,最終實現(xiàn)查詢結(jié)果的獲取以及查詢過程的優(yōu)化。 在查詢概念的理念優(yōu)化過程中,需要根據(jù)條件值得層面變化,加強(qiáng)整體的查詢數(shù)據(jù)優(yōu)化。在選擇條件方面,可以采用多個不等值得變化研究進(jìn)行等價的數(shù)據(jù)控制。當(dāng)選擇條件C是多個等值與不等值比較的AND其效果是結(jié)果的大小估計是原始關(guān)系的大小乘以每個案件的選中率因子。該因子對于任何不等值比較是1/3 ,當(dāng)選擇涉及OR條件時,則取關(guān)系R的大小與分別滿足條件C,和C:的元組數(shù)之和這兩者中的較小者;一個稍復(fù)雜但更準(zhǔn)確的對下式的大小估計是假設(shè)C,和CZ相互獨立:s=W n2,并且若R有n個元組,其中有m,個滿足C,,有m:個滿足CZ,則估計S中元組的數(shù)目為:n (1- (1-m,/n )(1-m2/n ))。因此,在進(jìn)行數(shù)據(jù)的查詢中,需要相配相應(yīng)的期望指數(shù)。其整體的公式如下: 從整體上來看,其不同關(guān)系的任意參數(shù)具有不同的公共屬性。在自然連接的情況下,需要對RCS的大小進(jìn)行初步的估計。對于每一個R與S的數(shù)值都需要進(jìn)行取值的計算。從而使得數(shù)據(jù)庫的參數(shù)更為準(zhǔn)確。并且在查詢過程中的速率以及準(zhǔn)確率都能得到顯著性地提高。 某數(shù)據(jù)庫由于查詢工具較為傳統(tǒng),其信息查詢體系還不夠完善。操作員在進(jìn)行操作的過程中,還需要進(jìn)行人工查詢比對分析,查詢的效率十分低下。為了能夠讓查詢的工具得到優(yōu)化,公司后臺采用多種結(jié)構(gòu)優(yōu)化方式,讓查詢的平臺逐步的自動化、清晰化。其優(yōu)化方案如下: 在整體的計算過程中,其通常會具有不同的優(yōu)化方式。其數(shù)據(jù)庫對應(yīng)的算法一般也可以分為兩種。分別是SMJ算法和INL1算法。數(shù)據(jù)庫對這兩種算法都進(jìn)行了綜合性的改進(jìn)。并不需要從內(nèi)表的第一個元組開始,只需要從上一次的掃描始點開始搜索即可,這樣充分發(fā)揮超高速緩存(cache)的作用,因為下一次的搜索元組與上一次的掃描元組重疊。這樣命中的概率非常大;而INL1算法是隨機(jī)存取,計算率也十分的準(zhǔn)確。其查詢優(yōu)化結(jié)構(gòu)圖如下圖2所示: 圖2 查詢優(yōu)化結(jié)構(gòu)圖 數(shù)據(jù)庫主要對掃描的長度及搜索的長度進(jìn)行分析,并對開始碼進(jìn)行相應(yīng)的體系控制。在進(jìn)行多重的搜索掃描以后,會將查詢的內(nèi)容進(jìn)行迅速的信息反饋。比傳統(tǒng)的手動輸入及信息比對要快捷很多。在查詢結(jié)束以后,可以掃描結(jié)束碼,這樣不僅保證了信息的安全,而且還使得查詢精準(zhǔn)率得到提高,最終使得掃描的效果更為顯著。 查詢優(yōu)化技術(shù)是數(shù)據(jù)庫中一項重要的技術(shù)。對于的查詢要求,我們應(yīng)該根據(jù)數(shù)據(jù)規(guī)模大小、具體的物理存儲結(jié)構(gòu)等因素進(jìn)行分析,選擇合適的查詢策略。具體的SQL查詢語句應(yīng)根據(jù)代數(shù)優(yōu)化的相關(guān)原則進(jìn)行變換,提高查詢效率。查詢優(yōu)化的目的是為了提升系統(tǒng)的性能,如果進(jìn)行優(yōu)化本身需要花費的代價過大,反而會降低系統(tǒng)的性能。所以只有兼顧了查詢效率、控制系統(tǒng)開銷、保障數(shù)據(jù)庫安全等諸多方面才能真正地優(yōu)化系統(tǒng)的性能。 [1]林子雨,鄒權(quán),張珊珊.淺論關(guān)系數(shù)據(jù)庫中關(guān)鍵詞查詢結(jié)果動態(tài)優(yōu)化[J].現(xiàn)代計算機(jī),2011. [2]王能斌,馬士平,任興達(dá).關(guān)系數(shù)據(jù)庫查詢方法研究[J].山西師范大學(xué)學(xué)報:電子設(shè)計工程,2017. [3]薩師煊,王嵐珊,任興輝.數(shù)據(jù)庫關(guān)鍵詞搜索新技術(shù)研究.軟件學(xué)報,2015.2.2查詢策略的使用
3 基于關(guān)系數(shù)據(jù)庫的關(guān)鍵詞查詢以及算法優(yōu)化應(yīng)用
3.1蟻群優(yōu)化算法
3.2概念漂移原理的應(yīng)用
4 關(guān)系數(shù)據(jù)庫查詢優(yōu)化案例分析
5 總結(jié)