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