專利名稱::基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種查詢計(jì)劃緩存的方法及其系統(tǒng),尤其涉及一種基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法及其系統(tǒng),屬于數(shù)據(jù)庫
技術(shù)領(lǐng)域:
。
背景技術(shù):
:數(shù)據(jù)庫系統(tǒng)的一個(gè)主要功能是快速執(zhí)行用戶對(duì)數(shù)據(jù)的查詢和更新等操作,然而從用戶輸入的SQL語句必須經(jīng)過轉(zhuǎn)化才能成為能夠直接對(duì)物理存儲(chǔ)上的訪問。因此,查詢優(yōu)化器被引入以完成這個(gè)過程。然而,對(duì)于一個(gè)復(fù)雜的查詢,往往有很多種不同的查詢執(zhí)行方式,這會(huì)導(dǎo)致查詢優(yōu)化器耗費(fèi)過多時(shí)間用于SQL語句優(yōu)化,在極端的情況下,甚至有可能超過查詢本身執(zhí)行的時(shí)間。因此,查詢緩存做為一個(gè)技術(shù)被廣泛應(yīng)用于各個(gè)數(shù)據(jù)庫中,用以降低查詢優(yōu)化的時(shí)間,其基本思想是把以前使用過的查詢緩存在內(nèi)存中,僅把其中的常量(如下式i)中的2替換成可變參數(shù)),在新的查詢輸入時(shí),如果能和原先的查詢匹配(僅可變參數(shù)不同),那么就不需要為其重新生成查詢計(jì)劃,而重新使用原先的查詢計(jì)劃。能夠使用原有的查詢計(jì)劃的查詢被稱為命中,命中率越高,意味著查詢計(jì)劃緩存系統(tǒng)的效率越高。然而,現(xiàn)有的查詢緩存技術(shù)存在很多不足之處缺陷,其中有兩個(gè)主要的問題。問題a)只能支持完全可以進(jìn)行參數(shù)匹配的那些語句,比如以下三個(gè)簡(jiǎn)單的SQL語句式子select*fromTwhereT.c1=2i)select*fromTwhereT.c1=3ii)select*fromTwhereT.c1=3andT.c2=3iii)其中,i)和ii)之間可以可以進(jìn)行匹配,但是針對(duì)結(jié)構(gòu)并不相同的語句,例如i)和iii)卻不能匹配,盡管之前在緩存池中已經(jīng)存在了i)的計(jì)劃,但是因?yàn)閕)和iii)之間的謂詞數(shù)目并不同,所以保存的i)的查詢計(jì)劃并不能為iii)所用,必須重新生成。在傳統(tǒng)的OLTP(聯(lián)機(jī)事務(wù)處理)應(yīng)用中,查詢語句之間的區(qū)別往往是常量參數(shù)的不同,即語句的區(qū)別類似與i)和ii),使用傳統(tǒng)的計(jì)劃緩存方式,可以達(dá)到很高的命中率;但對(duì)于新興的OLAP(聯(lián)機(jī)數(shù)據(jù)分析)應(yīng)用,查詢語句的區(qū)別往往是類似i)式和iii)式的區(qū)別,在這類應(yīng)用中,計(jì)劃緩存系統(tǒng)的命中率將迅速下降,甚至接近于0。問題b)在一些情況下,即使兩個(gè)查詢完全匹配,也不能保證緩存中的查詢計(jì)劃可以應(yīng)用中后一個(gè)查詢。以i)為例,假設(shè)在T的c1上存在一個(gè)索引T_C1,且表T中滿足條件C1=2的行不多,那么生成的計(jì)劃將為一個(gè)索引掃描操作IndexScanusingT_C1onTIndexCond(C1=2)當(dāng)表T中的行大量滿足C1=3時(shí),為ii)生成的計(jì)劃應(yīng)該是一個(gè)普通的如下的表掃描。SeqScanonTFilter(C1=3)但計(jì)劃緩存往往會(huì)產(chǎn)生錯(cuò)誤的匹配,導(dǎo)致生成不優(yōu)的查詢計(jì)劃。由a)和b)兩個(gè)問題可以看到,即使是看似相似的條件,也不能保證一定能匹配原先的計(jì)劃,而看似不同的條件,也不能不匹配原先的計(jì)劃。因此,現(xiàn)有的基于常量參數(shù)的算法不能保證最好的查詢緩存匹配效果,導(dǎo)致查詢計(jì)劃緩存的效率不高,甚至出現(xiàn)錯(cuò)誤的匹配影響查詢執(zhí)行的效率。
發(fā)明內(nèi)容本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)的不足,提供一種新的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法及其系統(tǒng)。該方法及其系統(tǒng)可以顯著提升查詢計(jì)劃緩存的命中率。為實(shí)現(xiàn)上述的發(fā)明目的,本發(fā)明采用下述的技術(shù)方案一種基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法,其特征在于包括如下步驟(1)分析查詢中使用到表;(2)取出表的查詢計(jì)劃緩存;(3)取出可匹配的查詢計(jì)劃緩存;(4)分析查詢謂詞的差別;(5)是否有相差謂詞?(6)如果是,則進(jìn)一步判斷是否有影響索引的謂詞以及關(guān)鍵度是否大于K;如果否,則分析現(xiàn)有謂詞,判斷關(guān)鍵度是否大于K;(7)比較這些謂詞的選擇度差異;(8)在差異不影響查詢計(jì)劃的前提下,返回結(jié)果。在查詢之前,首先把查詢進(jìn)行語法分析,生成語法樹,并將其使用到的謂詞和表解析出來。所述謂詞被分為KEY和FILTER,所述步驟(6)中的謂詞為KEY。一種基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存系統(tǒng),其特征在于包括語法分析器處理輸入的SQL查詢語句,完成語法檢查,生成可供內(nèi)部處理的標(biāo)準(zhǔn)的語法樹結(jié)構(gòu),以表示用戶輸入的查詢;查詢緩存器負(fù)責(zé)緩存全部的查詢計(jì)劃,并將其存儲(chǔ)在系統(tǒng)的內(nèi)存中,按涉及的到表、索引等物理結(jié)構(gòu)的多少進(jìn)行管理和組織;查詢優(yōu)化器根據(jù)一個(gè)輸入的查詢語句,為其生成最優(yōu)的計(jì)劃,并將該計(jì)劃輸出給執(zhí)行器執(zhí)行,同時(shí)輸出到查詢緩存器中進(jìn)行存儲(chǔ);謂詞分析器負(fù)責(zé)根據(jù)查詢統(tǒng)計(jì)信息,分析查詢計(jì)劃和查詢語句中的謂詞的權(quán)重,確定計(jì)劃是否依賴于固定謂詞;查詢執(zhí)行器執(zhí)行查詢計(jì)劃,并在執(zhí)行過程中進(jìn)行統(tǒng)計(jì)信息的反饋更新;統(tǒng)計(jì)信息處理器負(fù)責(zé)統(tǒng)計(jì)信息的維護(hù)、更新、使用;其中語法分析器與謂詞分析器之間傳遞用戶輸入的SQL語句轉(zhuǎn)換后的語法分析樹;查詢優(yōu)化器與查詢緩存器之間傳遞生成的查詢計(jì)劃;查詢優(yōu)化器與謂詞分析器之間傳遞生成的查詢計(jì)劃;查詢優(yōu)化器與查詢執(zhí)行器之間傳遞生成的查詢計(jì)劃;查詢執(zhí)行器與統(tǒng)計(jì)信息處理器之間傳遞查詢執(zhí)行時(shí)的實(shí)時(shí)統(tǒng)計(jì)信息;統(tǒng)計(jì)信息處理器與謂詞分析器之間傳遞統(tǒng)計(jì)信息;謂詞分析器與查詢優(yōu)化器之間傳遞通過匹配完成的查詢計(jì)劃;查詢緩存器與謂詞分析器之間傳遞匹配的查詢計(jì)劃。謂詞分析器中按以下序列確定其對(duì)查詢計(jì)劃的影響度(1)是否是優(yōu)化器確定使用的唯一索引的主鍵值;(2)是否是優(yōu)化器確定使用的普通索引的鍵值;(3)是否是優(yōu)化器確定使用的唯一多值索引的一部分;(4)是否是優(yōu)化器確定使用的普通多值索引的一部分。本發(fā)明所提供的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法及其系統(tǒng)具有以下優(yōu)點(diǎn)1.提升了查詢計(jì)劃緩存的命中率,克服了以往的技術(shù)不能支持查詢語句中謂詞數(shù)目不同情況下造成的無法匹配實(shí)際可用的查詢計(jì)劃緩存的現(xiàn)象,特別是適合新型的OLAP應(yīng)用,從而提高了查詢處理的速度,提升了查詢性能。2.通過謂詞分析的過程,去除了那些對(duì)于查詢影響關(guān)鍵度沒有影響或者影響小于一個(gè)閾值的謂詞,減少了不必要的查詢計(jì)劃緩存匹配謂詞,加快了匹配速度。3.通過查詢計(jì)劃緩存的基于查詢所涉及到的表分類管理,提高了查詢計(jì)劃緩存本身訪問的速度。下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的說明。圖1為本發(fā)明所述的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存系統(tǒng)的示意圖。圖2為查詢計(jì)劃的示意圖。圖3為本發(fā)明所述的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法的流程圖。圖4為作為具體實(shí)施例的某育齡婦女信息數(shù)據(jù)庫的界面示意圖。具體實(shí)施例方式本發(fā)明的核心技術(shù)思想在于通過把一個(gè)查詢中出現(xiàn)的關(guān)鍵條件分割為一個(gè)個(gè)的謂詞,由謂詞分析器根據(jù)查詢統(tǒng)計(jì)信息確定每個(gè)謂詞對(duì)查詢計(jì)劃的影響,分析其權(quán)重,最終決定這些謂詞是否會(huì)影響查詢計(jì)劃,如果不影響的話,那么即使用戶輸入的查詢語句和現(xiàn)有的位于查詢緩存區(qū)的語句在謂詞數(shù)目上不一致,也認(rèn)為可以匹配已有的緩存計(jì)劃,從而提升緩存命中率。為此實(shí)現(xiàn)上述的技術(shù)思想,本發(fā)明采用如圖1所示的查詢緩存處理系統(tǒng)。該查詢緩存處理系統(tǒng)由以下幾個(gè)關(guān)鍵子系統(tǒng)構(gòu)成,它們都完成特定的功能1.語法分析器處理輸入的SQL查詢語句,完成語法檢查,生成可供內(nèi)部處理的標(biāo)準(zhǔn)的語法樹結(jié)構(gòu),以表示用戶輸入的查詢。2.查詢緩存器負(fù)責(zé)緩存全部的查詢計(jì)劃,并將其存儲(chǔ)在系統(tǒng)的內(nèi)存中,按涉及的到表、索引等物理結(jié)構(gòu)的多少進(jìn)行管理和組織。3.查詢優(yōu)化器根據(jù)一個(gè)輸入的查詢語句,為其生成最優(yōu)的計(jì)劃,并將該計(jì)劃輸出給執(zhí)行器執(zhí)行,同時(shí)輸出到查詢緩存器中進(jìn)行存儲(chǔ)。4.謂詞分析器負(fù)責(zé)根據(jù)查詢統(tǒng)計(jì)信息,分析查詢計(jì)劃和查詢語句中的謂詞的權(quán)重,確定計(jì)劃是否依賴于固定謂詞。5.查詢執(zhí)行器執(zhí)行查詢計(jì)劃,并在執(zhí)行過程中進(jìn)行統(tǒng)計(jì)信息的反饋更新。6.統(tǒng)計(jì)信息處理器負(fù)責(zé)統(tǒng)計(jì)信息的維護(hù)、更新、使用。各個(gè)子系統(tǒng)之間傳遞的信息流如表1所示表1在這個(gè)過程中,最關(guān)鍵的部分在于查詢中謂詞的權(quán)重估計(jì)。權(quán)重估計(jì)分為兩部分進(jìn)行,第一步是在優(yōu)化器生成查詢計(jì)劃時(shí)的進(jìn)行,第二是在匹配查詢計(jì)劃時(shí)進(jìn)行。查詢緩存的關(guān)鍵在于為新的查詢?cè)谝延械牟樵冇?jì)劃緩存中找到一個(gè)最為合適的,傳統(tǒng)的辦法是簡(jiǎn)單的匹配字符串,而在我們的發(fā)明中,則使用謂詞匹配的方式。首先把查詢進(jìn)行語法分析,生成語法樹,并將其使用到的謂詞和表解析出來。在優(yōu)化器生成查詢計(jì)劃時(shí),優(yōu)化器會(huì)使用其中一些謂詞,謂詞被分為KEY和FILTER,所謂的KEY是指能用于索引的那些謂詞,比如表T(Iint,Jint)有索引T_I建立在T(I)上,那么例如謂詞(T.i>5)的表達(dá)式被稱為KEY,而謂詞T.K>5這樣的謂詞則被稱為是FITER。KEY對(duì)查詢計(jì)劃的影響比較大,而FILTER則次之。對(duì)于KEY,由于索引類型的不同,KEY又存在不同的級(jí)別,在謂詞分析器中按以下序列確定其對(duì)查詢計(jì)劃的影響度。a)是否是優(yōu)化器確定使用的唯一索引的主鍵值。b)是否是優(yōu)化器確定使用的普通索引的鍵值。c)是否是優(yōu)化器確定使用的唯一多值索引的一部分。d)是否是優(yōu)化器確定使用的普通多值索引的一部分。對(duì)于FILTER,對(duì)查詢計(jì)劃的影響主要是體現(xiàn)在選擇率(selectivity)的大小,即通過這個(gè)FILTER謂詞后所剩下的元組和總輸入元組的比較。選擇率越小的Filter對(duì)查詢計(jì)劃的影響越大,反之,則影響越小。由于查詢計(jì)劃是一個(gè)如圖2所示的樹狀圖,在樹的底層的查詢由于結(jié)果要為上層所用,因此其KEY和FILTER對(duì)查詢的影響更大,如圖2中的Filter21和KEY31對(duì)于查詢代價(jià)的影響就要大于Filter11。查詢優(yōu)化器在第一次計(jì)算出查詢計(jì)劃時(shí),就根據(jù)選擇率和FILTER所位于的位置,可以定義出他們對(duì)于查詢計(jì)劃代價(jià)的影響函數(shù)(這是標(biāo)準(zhǔn)的Cost-based查詢優(yōu)化器可以進(jìn)行的操作,不詳述),這稱為謂詞的關(guān)鍵度。然后把這些謂詞及其關(guān)鍵度放置在查詢緩存器中。我們根據(jù)系統(tǒng)的具體情況,設(shè)置一個(gè)查詢計(jì)劃代價(jià)的閾值K,并按如下算法確定是否可以兩者是否可匹配,即是否能命中1)檢查查詢語句中涉及的表和緩存中的查詢計(jì)劃中涉及的表是否一致,如不一致,那么不能匹配。2)檢查需要匹配的查詢語句和緩存中的查詢計(jì)劃是否相差一個(gè)或者數(shù)個(gè)謂詞,如不相差,那么跳到第6)步。如果相差,那么進(jìn)入下一步。3)如果這些謂詞為KEY,那么確認(rèn)他們是否影響到了索引的選擇,如果影響到,那么這個(gè)兩者是不能命中。如果不影響,那么等同F(xiàn)ILTER處理,進(jìn)入下一步。4)對(duì)于不影響的KEY和所有的FILTER,計(jì)算他們對(duì)于查詢計(jì)劃的關(guān)鍵度,即對(duì)查詢代價(jià)引起的偏差程度。5)對(duì)于關(guān)鍵度<K的謂詞,意味著這兩者是可以匹配的,不進(jìn)行處理。如果所有的相差謂詞關(guān)鍵度都<K,就意味著這個(gè)查詢是可以匹配的,進(jìn)入下一步。否則認(rèn)為是不能匹配的。6)對(duì)于所有可以命中的情況下,由于每個(gè)謂詞的常量可以發(fā)生變化,需要檢查其每個(gè)謂詞對(duì)查詢計(jì)劃的影響,如果關(guān)鍵度>K的,那么需要計(jì)算謂詞應(yīng)用新的常量時(shí)的選擇度與原來計(jì)劃緩存的選擇度的區(qū)別,如果選擇度沒有區(qū)別,就意味著該謂詞是匹配的,如果選擇度相差比較大的,就意味著基于這一謂詞計(jì)算出來的查詢計(jì)劃必須重新計(jì)劃,即不能匹配。圖3是說明本發(fā)明所提供的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法的基本流程圖。關(guān)于該流程的各步驟,在上述的說明中都有詳細(xì)的解釋,在此不一一說明了。下面以一個(gè)具體的數(shù)據(jù)庫查詢?yōu)槔龑?duì)本方法及其系統(tǒng)的效果予以進(jìn)一步說明。該數(shù)據(jù)庫是某育齡婦女信息數(shù)據(jù)庫,數(shù)據(jù)庫中存放了育齡婦女的有關(guān)信息,并提供了根據(jù)不同維度由用戶進(jìn)行定制查詢的功能,即所有的SQL語句都是由用戶根據(jù)需要可以增加不同的查詢條件并進(jìn)行隨意組合來完成其查詢的,如出生日期,父母信息條件,計(jì)劃內(nèi)生育指標(biāo),所在城市等等幾十個(gè)條件,如圖4所示。在應(yīng)用本發(fā)明之前,由于每個(gè)語句的謂詞數(shù)目都不相等,生成的語句類似如下selectdistinctbasetable.bt_code,basetable.bt_bname,basetable.bt_birth_date,husband.hb_husband_name,husband.hb_birth_date,nursing.nu_sex,nursing.nubirth_date,nursing.nu_report_date,nursing.nu_procreate,nursing.nu_attributefrom(select*frombasetablewherebasetable.bt_codelike'330605%')asbasetableleftjoin(select*fromnursing)asnursingon(nursing.nu_code=basetable.bt_code)and(nursing.nu_codelike'330605%')leftjoin(select*fromhusband)ashusbandon(husband.hb_code=basetable.bt_code)and(husband.hb_codelike'330605%')where((nursing.nu_report_date>='20050101'andnursing.nu_report_date<='20050531')and(nursing.nu_birth_date<'20050101')and(((nursing.nu_report_date>=basetable.bt_indate)andnot(basetable.bt_indate=”))or(basetable.bt_indate=”)))and(nursing.nu_is_last='1'ornu_codeisnull)andbasetable.bt_codelike'330605%'orderbybasetable.bt_code;其中在where之后出現(xiàn)的條件都是可選擇的,如”(nursing.nu_report_date>='20050101'andnursing.nu_report_date<='20050531')”(上報(bào)日期在2005年1月1日和2005年5月31日間),”nursing.nu_birth_date<'20050101'”(出生日期小于2005年1月1日),因此幾乎所有的查詢語句都不能在查詢緩沖中命中,除非每次都使用相同的謂詞組合,其命中率在實(shí)際應(yīng)用測(cè)試中不到10%。采用本發(fā)明所述的方法及其系統(tǒng)之后,經(jīng)實(shí)際應(yīng)用測(cè)試,基本上這些查詢能夠用大約100個(gè)查詢計(jì)劃全部覆蓋住,在運(yùn)行一段時(shí)間后,所有的查詢計(jì)劃緩存命中率達(dá)到了90%以上。以上對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行了詳細(xì)的解說。對(duì)于本
技術(shù)領(lǐng)域:
的一般技術(shù)人員來說,在不背離本發(fā)明所述方法的精神和權(quán)利要求范圍的情況下對(duì)它進(jìn)行的各種顯而易見的改變都在本發(fā)明的保護(hù)范圍之內(nèi)。權(quán)利要求1.一種基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法,其特征在于包括如下步驟(1)分析查詢中使用到表;(2)取出表的查詢計(jì)劃緩存;(3)取出可匹配的查詢計(jì)劃緩存;(4)分析查詢謂詞的差別;(5)是否有相差謂詞?(6)如果是,則進(jìn)一步判斷是否有影響索引的謂詞以及關(guān)鍵度是否大于K;如果否,則分析現(xiàn)有謂詞,判斷關(guān)鍵度是否大于K;(7)比較這些謂詞的選擇度差異;(8)在差異不影響查詢計(jì)劃的前提下,返回結(jié)果。2.如權(quán)利要求1所述的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法,其特征在于在查詢之前,首先把查詢進(jìn)行語法分析,生成語法樹,并將其使用到的謂詞和表解析出來。3.如權(quán)利要求1所述的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法,其特征在于所述謂詞被分為KEY和FILTER,所述步驟(6)中的謂詞為KEY。4.如權(quán)利要求1所述的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法,其特征在于步驟(4)中,進(jìn)一步包括如下步驟(1)檢查查詢語句中涉及的表和緩存中的查詢計(jì)劃中涉及的表是否一致,如不一致,那么不能匹配;(2)檢查需要匹配的查詢語句和緩存中的查詢計(jì)劃是否相差一個(gè)或者數(shù)個(gè)謂詞,如不相差,那么跳到第(6)步;如果相差,那么進(jìn)入下一步;(3)如果這些謂詞為KEY,那么確認(rèn)他們是否影響到了索引的選擇,如果影響到,那么這個(gè)兩者是不能命中;如果不影響,那么等同F(xiàn)ILTER處理,進(jìn)入下一步;(4)對(duì)于不影響的KEY和所有的FILTER,計(jì)算他們對(duì)于查詢計(jì)劃的關(guān)鍵度,即對(duì)查詢代價(jià)引起的偏差程度;(5)對(duì)于關(guān)鍵度<K的謂詞,不進(jìn)行處理;如果所有的相差謂詞關(guān)鍵度都<K,進(jìn)入下一步;否則認(rèn)為是不能匹配的;(6)對(duì)于所有可以命中的情況下,檢查其每個(gè)謂詞對(duì)查詢計(jì)劃的影響,如果關(guān)鍵度>K的,計(jì)算謂詞應(yīng)用新的常量時(shí)的選擇度與原來計(jì)劃緩存的選擇度的區(qū)別,如果選擇度沒有區(qū)別,意味該謂詞是匹配的,如果選擇度相差比較大的,就意味著基于這一謂詞計(jì)算出來的查詢計(jì)劃必須重新計(jì)劃,即不能匹配。5.一種基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存系統(tǒng),其特征在于包括語法分析器處理輸入的SQL查詢語句,完成語法檢查,生成可供內(nèi)部處理的標(biāo)準(zhǔn)的語法樹結(jié)構(gòu),以表示用戶輸入的查詢;查詢緩存器負(fù)責(zé)緩存全部的查詢計(jì)劃,并將其存儲(chǔ)在系統(tǒng)的內(nèi)存中,按涉及的到表、索引等物理結(jié)構(gòu)的多少進(jìn)行管理和組織;查詢優(yōu)化器根據(jù)一個(gè)輸入的查詢語句,為其生成最優(yōu)的計(jì)劃,并將該計(jì)劃輸出給執(zhí)行器執(zhí)行,同時(shí)輸出到查詢緩存器中進(jìn)行存儲(chǔ);謂詞分析器負(fù)責(zé)根據(jù)查詢統(tǒng)計(jì)信息,分析查詢計(jì)劃和查詢語句中的謂詞的權(quán)重,確定計(jì)劃是否依賴于固定謂詞;查詢執(zhí)行器執(zhí)行查詢計(jì)劃,并在執(zhí)行過程中進(jìn)行統(tǒng)計(jì)信息的反饋更新;統(tǒng)計(jì)信息處理器負(fù)責(zé)統(tǒng)計(jì)信息的維護(hù)、更新、使用;其中語法分析器與謂詞分析器之間傳遞用戶輸入的SQL語句轉(zhuǎn)換后的語法分析樹;查詢優(yōu)化器與查詢緩存器之間傳遞生成的查詢計(jì)劃;查詢優(yōu)化器與謂詞分析器之間傳遞生成的查詢計(jì)劃;查詢優(yōu)化器與查詢執(zhí)行器之間傳遞生成的查詢計(jì)劃;查詢執(zhí)行器與統(tǒng)計(jì)信息處理器之間傳遞查詢執(zhí)行時(shí)的實(shí)時(shí)統(tǒng)計(jì)信息;統(tǒng)計(jì)信息處理器與謂詞分析器之間傳遞統(tǒng)計(jì)信息;謂詞分析器與查詢優(yōu)化器之間傳遞通過匹配完成的查詢計(jì)劃;查詢緩存器與謂詞分析器之間傳遞匹配的查詢計(jì)劃。6.如權(quán)利要求5所述的基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存系統(tǒng),其特征在于在謂詞分析器中按以下序列確定其對(duì)查詢計(jì)劃的影響度(1)是否是優(yōu)化器確定使用的唯一索引的主鍵值;(2)是否是優(yōu)化器確定使用的普通索引的鍵值;(3)是否是優(yōu)化器確定使用的唯一多值索引的一部分;(4)是否是優(yōu)化器確定使用的普通多值索引的一部分。全文摘要本發(fā)明提供了一種基于謂詞關(guān)鍵度分析的查詢計(jì)劃緩存方法及其系統(tǒng)。在本發(fā)明中,通過把一個(gè)查詢中出現(xiàn)的關(guān)鍵條件分割為一個(gè)個(gè)的謂詞,由謂詞分析器根據(jù)查詢統(tǒng)計(jì)信息確定每個(gè)謂詞對(duì)查詢計(jì)劃的影響,分析其權(quán)重,最終決定這些謂詞是否會(huì)影響查詢計(jì)劃,如果不影響的話,那么即使用戶輸入的查詢語句和現(xiàn)有的位于查詢緩存區(qū)的語句在謂詞數(shù)目上不一致,也認(rèn)為可以匹配已有的緩存計(jì)劃,從而提升緩存命中率。文檔編號(hào)G06F17/30GK1825305SQ20051011685公開日2006年8月30日申請(qǐng)日期2005年10月31日優(yōu)先權(quán)日2005年10月31日發(fā)明者顧云蘇申請(qǐng)人:北京神舟航天軟件技術(shù)有限公司