两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種數(shù)據(jù)庫查詢優(yōu)化方法及系統(tǒng)的制作方法

文檔序號(hào):9929639閱讀:543來源:國知局
一種數(shù)據(jù)庫查詢優(yōu)化方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種數(shù)據(jù)庫查詢優(yōu)化方法及系統(tǒng)。
【背景技術(shù)】
[0002]數(shù)據(jù)庫系統(tǒng)對(duì)用戶隱藏?cái)?shù)據(jù)結(jié)構(gòu)細(xì)節(jié),提供一個(gè)與數(shù)據(jù)無關(guān)的接口,用戶只需對(duì)查詢行為進(jìn)行簡單描述,無須關(guān)注獲取這些數(shù)據(jù)的內(nèi)部過程。查詢優(yōu)化就是在查詢執(zhí)行引擎生成一個(gè)執(zhí)行策略的過程中,盡量使查詢的總資源占用和總時(shí)間消耗極小化。數(shù)據(jù)庫管理系統(tǒng)可以內(nèi)置一個(gè)查詢優(yōu)化器,用于控制和加快查詢執(zhí)行和數(shù)據(jù)傳輸?shù)倪^程,當(dāng)用戶查詢表達(dá)經(jīng)過查詢處理器的語法分析處理后,查詢優(yōu)化器為查詢選擇一種適當(dāng)?shù)臄?shù)據(jù)存取策略作為輸出。然而,查詢優(yōu)化一直是個(gè)復(fù)雜的問題,特別是對(duì)海量數(shù)據(jù)的查詢。
[0003]數(shù)據(jù)庫系統(tǒng)的一個(gè)主要功能是它能夠使得用戶通過查詢語言訪問和修改數(shù)據(jù)。查詢是數(shù)據(jù)庫系統(tǒng)中最基本、最常用的一種操作,因此,查詢是否具備較高的執(zhí)行效率和快捷的反應(yīng)速度,己成為數(shù)據(jù)庫用戶和設(shè)計(jì)者極其關(guān)注的問題。為了提高數(shù)據(jù)庫系統(tǒng)的性能,對(duì)查詢進(jìn)行優(yōu)化是必不可少的。

【發(fā)明內(nèi)容】

[0004]本發(fā)明的目的在于提供一種數(shù)據(jù)庫查詢優(yōu)化方法及系統(tǒng),能夠取得更好的優(yōu)化效果,提高查詢效率。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明提供的數(shù)據(jù)庫查詢優(yōu)化方法,包括以下步驟:
[0006]I)將查詢語句字符串用查詢內(nèi)部表示結(jié)構(gòu)表示;
[0007]2)對(duì)所述查詢內(nèi)部表示進(jìn)行特性分析,生成在語義上等價(jià)的查詢內(nèi)部表示;
[0008]3)對(duì)所述在語義上等價(jià)的查詢內(nèi)部表示進(jìn)行語法分析,生成語義上的數(shù)據(jù)庫內(nèi)部表不;
[0009]4)將語義上的數(shù)據(jù)庫內(nèi)部表示進(jìn)行查詢優(yōu)化處理,生成最終的執(zhí)行計(jì)劃;
[0010]5)對(duì)最終的執(zhí)行計(jì)劃進(jìn)行解釋和執(zhí)行,生成查詢結(jié)果或錯(cuò)誤信息。
[0011]進(jìn)一步地,所述步驟I)是將查詢語句字符串分成多個(gè)詞法單元并用查詢內(nèi)部表示結(jié)構(gòu)表示。
[0012]進(jìn)一步地,所述步驟2)是根據(jù)查詢重寫規(guī)則對(duì)所述查詢內(nèi)部表示進(jìn)行特性分析,生成在語義上等價(jià)的查詢內(nèi)部表示。
[0013]進(jìn)一步地,所述查詢重寫規(guī)則包括;
[0014]a)將過程性查詢轉(zhuǎn)換成描述性查詢;
[0015]b)將效率較低的謂詞轉(zhuǎn)換為等價(jià)的效率高的謂詞;
[0016]c)將查詢語句轉(zhuǎn)換成效率高的語句;
[0017]d)將查詢轉(zhuǎn)換為單個(gè)選擇語句。
[0018]進(jìn)一步地,所述步驟3)進(jìn)一步包括以下步驟:對(duì)所述在語義上等價(jià)的查詢內(nèi)部表示進(jìn)行語法分析及語義檢查,如果語法是正確的,將生成一個(gè)語法樹,然后再對(duì)該語法樹進(jìn)行檢查;如果所述在語義上等價(jià)的查詢內(nèi)部表示涉及到的表、視圖以及相關(guān)屬性是合法的,則生成一個(gè)語義上的數(shù)據(jù)庫內(nèi)部表示。
[0019]進(jìn)一步地,所述步驟4)進(jìn)一步包括以下步驟:將查詢的語義上的數(shù)據(jù)庫內(nèi)部表示轉(zhuǎn)化為查詢可執(zhí)行的內(nèi)部表示形式;對(duì)所述查詢可執(zhí)行的內(nèi)部表示進(jìn)行邏輯關(guān)系的優(yōu)化,得到查詢指令序列;執(zhí)行操作的優(yōu)化;執(zhí)行操作間關(guān)系的優(yōu)化,生成最終的執(zhí)行計(jì)劃。
[0020]更進(jìn)一步地,所述邏輯關(guān)系的優(yōu)化是根據(jù)表及其選擇條件,選擇先對(duì)哪個(gè)表作連接,通過條件類型及相關(guān)屬性決定其關(guān)系代數(shù)運(yùn)算的操作;所述執(zhí)行操作的優(yōu)化是針對(duì)操作確定其最佳執(zhí)行效果;所述操作間關(guān)系的優(yōu)化是針對(duì)不同的操作序列,進(jìn)行等價(jià)的重新組合。
[0021]為實(shí)現(xiàn)上述目的,本發(fā)明提供的數(shù)據(jù)庫查詢優(yōu)化系統(tǒng),包括,詞法分析器、查詢優(yōu)化器、語法分析器、查詢執(zhí)行引擎,以及計(jì)劃管理模塊,其中,
[0022]所述詞法分析器,其將查詢語句字符串分成多個(gè)詞法單元,并用查詢內(nèi)部表示結(jié)構(gòu)表示;
[0023]所述查詢優(yōu)化器,對(duì)所述查詢內(nèi)部表示進(jìn)行特性分析,生成一個(gè)語義上等價(jià)的查詢內(nèi)部表示;將查詢的語義上的數(shù)據(jù)庫內(nèi)部表示轉(zhuǎn)化為查詢可執(zhí)行的內(nèi)部表示形式;對(duì)所述查詢的語義上的數(shù)據(jù)庫內(nèi)部表示分別進(jìn)行優(yōu)化,生成最優(yōu)的執(zhí)行指令序列;
[0024]所述語法分析器,對(duì)輸入的查詢內(nèi)部表示進(jìn)行語法分析,生成語法樹和/或語義上的數(shù)據(jù)庫內(nèi)部表示;
[0025]所述查詢執(zhí)行引擎,從所述查詢優(yōu)化器模塊獲得最終的執(zhí)行計(jì)劃,并對(duì)其作出解釋和執(zhí)行,得出最終的正確結(jié)果或錯(cuò)誤信息;
[0026]所述計(jì)劃管理模塊,存儲(chǔ)并管理所述查詢優(yōu)化器發(fā)送的最終的執(zhí)行計(jì)劃。
[0027]進(jìn)一步地,所述查詢優(yōu)化器,進(jìn)一步包括查詢重寫模塊、邏輯關(guān)系優(yōu)化模塊、執(zhí)行操作優(yōu)化模塊,以及操作間關(guān)系優(yōu)化模塊,其中,
[0028]所述查詢重寫模塊,對(duì)查詢內(nèi)部表示進(jìn)行特性分析,生成語義上等價(jià)的查詢內(nèi)部表不;
[0029]所述邏輯關(guān)系優(yōu)化模塊,根據(jù)表及其選擇條件,選擇連接的表,并通過條件類型及相關(guān)屬性決定其關(guān)系代數(shù)運(yùn)算的操作;
[0030]所述執(zhí)行操作優(yōu)化模塊,其針對(duì)某一特定操作,確定其最佳執(zhí)行效果的算法。
[0031]所述操作間關(guān)系優(yōu)化模塊,其針對(duì)不同的操作序列,對(duì)其進(jìn)行等價(jià)的重新組合。
[0032]更進(jìn)一步地,所述查詢重寫模塊,其根據(jù)查詢重寫規(guī)則對(duì)所述查詢內(nèi)部表示進(jìn)行特性分析,生成在語義上等價(jià)的查詢內(nèi)部表示;所述查詢重寫條件,包括;將過程性查詢轉(zhuǎn)換成描述性查詢;將效率較低的謂詞轉(zhuǎn)換為等價(jià)的效率高的謂詞;將查詢語句轉(zhuǎn)換成效率高的語句;將查詢轉(zhuǎn)換為單個(gè)選擇語句。
[0033]本發(fā)明的數(shù)據(jù)庫查詢優(yōu)化方法及系統(tǒng),將查詢重寫規(guī)則和執(zhí)行策略相結(jié)合,對(duì)查詢語句解析的不同層次分別進(jìn)行優(yōu)化,通過查詢重寫從語句級(jí)別根據(jù)數(shù)據(jù)庫的執(zhí)行特點(diǎn)轉(zhuǎn)換成執(zhí)行效率較高的語句,通過對(duì)解析后的執(zhí)行策略重新排列、組合,轉(zhuǎn)換成等價(jià)的高效的執(zhí)行計(jì)劃。這樣可以很好地發(fā)揮查詢重寫的作用,一方面可以通過查詢重寫直接提高查詢效率,另一方面可以使得計(jì)劃優(yōu)化能夠取得更好的效果,從而可以避免單靠計(jì)劃優(yōu)化的優(yōu)化方法所帶來的局限性。
[0034]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。
【附圖說明】
[0035]附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,并與本發(fā)明的實(shí)施例一起,用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
[0036]圖1為根據(jù)本發(fā)明的數(shù)據(jù)庫查詢優(yōu)化方法的流程圖;
[0037]圖2為根據(jù)本發(fā)明的數(shù)據(jù)庫查詢優(yōu)化系統(tǒng)的框圖;
[0038]圖3為根據(jù)本發(fā)明的查詢優(yōu)化器結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039]以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0040]圖1為根據(jù)本發(fā)明的數(shù)據(jù)庫查詢優(yōu)化方法的流程圖,下面將參考圖1,對(duì)本發(fā)明的數(shù)據(jù)庫查詢優(yōu)化方法進(jìn)行詳細(xì)描述。
[0041]首先,在步驟101,在一個(gè)查詢語句執(zhí)行時(shí),首先把包含該查詢語句的字符串分成一個(gè)一個(gè)的詞法單元,用查詢內(nèi)部表示結(jié)構(gòu)表示,對(duì)查詢語句進(jìn)行詞法分析。
[0042]在步驟102,對(duì)詞法分析后的查詢內(nèi)部表示,進(jìn)行查詢語句的特性分析,將滿足條件的查詢重寫規(guī)則實(shí)施在該查詢上,從而生成一個(gè)語義上等價(jià)的查詢內(nèi)部表示,對(duì)查詢語句進(jìn)行查詢重寫。
[0043]本發(fā)明中,查詢重寫不考慮查詢計(jì)劃的代價(jià),因此,查詢重寫后的查詢不一定比原查詢效率高,查詢重寫是基于規(guī)則的,只有當(dāng)重寫條件滿足時(shí)才對(duì)查詢做相應(yīng)的轉(zhuǎn)換,否則查詢重寫什么也不做。查詢重寫規(guī)則包括:
[0044]1.將過程性查詢轉(zhuǎn)換成描述性的;
[0045]2.將效率較低的謂詞轉(zhuǎn)化為等價(jià)的效率較高的謂詞;
[0046]3.在查詢重寫階段將查詢語句轉(zhuǎn)換成效率高的語句,消除冗余,常量條件;
[0047]4.將查詢轉(zhuǎn)換為單個(gè)選擇語句。
[0048]查詢重寫,通過對(duì)所給的查詢施加一些特定的變換(如:將嵌套子查詢合并、等價(jià)謂詞替換,等),從而產(chǎn)生等價(jià)的希望比原來效率更高的查詢。在重寫階段,只依賴于查詢本身的特點(diǎn),即如果查詢滿足了某些特性或條件就會(huì)實(shí)施相應(yīng)的重寫操作,它不考慮查詢的執(zhí)行代價(jià)。因此,不管重寫后的查詢效率是比原來的高還是比原來底,新產(chǎn)生的查詢都會(huì)被傳到下一階段處理。
[0049]在步驟103,對(duì)查詢語句進(jìn)行語法分析及語義檢查,如果查詢語句語法是正確的,將生成一個(gè)語法樹,然后再對(duì)該語法樹進(jìn)行檢查,如果該語句涉及到的表、視圖以及相關(guān)屬性都是合法的,則生成一個(gè)語義上的數(shù)據(jù)庫內(nèi)部表示,該語義上的數(shù)據(jù)庫內(nèi)部表示主要用于生成sql語句對(duì)應(yīng)的執(zhí)行體序列。
[0050]在步驟104,將語義上的數(shù)據(jù)庫內(nèi)部表示進(jìn)行查詢優(yōu)化處理。首先將查詢的語義上的數(shù)據(jù)庫內(nèi)部表示轉(zhuǎn)化為查詢可執(zhí)行的內(nèi)部表示(執(zhí)行體序列)形式,然后根據(jù)join算法對(duì)內(nèi)部表示進(jìn)行邏輯關(guān)系的優(yōu)化操作,得到一系列查詢指令序列;然后執(zhí)行操作間關(guān)系的優(yōu)化生成最優(yōu)的執(zhí)行指令序列,指令執(zhí)行時(shí)在選擇優(yōu)化后的算法執(zhí)行具體的指令操作。最終的執(zhí)行計(jì)劃(最優(yōu)的執(zhí)行指令序列)將提交給計(jì)劃管理模塊來存儲(chǔ)或直接交給查詢執(zhí)行引擎執(zhí)行。
[0051 ]在步驟105,對(duì)最終的執(zhí)行計(jì)劃進(jìn)行解釋和執(zhí)行,生成查詢結(jié)果或錯(cuò)誤信息。查詢執(zhí)行引擎為每一個(gè)關(guān)系操作或操作序列實(shí)現(xiàn)一系列物理操作從而實(shí)現(xiàn)一系列數(shù)據(jù)庫實(shí)現(xiàn),如插入數(shù)據(jù),查詢等,這些物理操作包括排序、順序掃描、索引掃描、連接、嵌套循環(huán)連接、排序歸并連接,物化等。進(jìn)而產(chǎn)生執(zhí)行查詢的代碼,交給數(shù)據(jù)庫處理器執(zhí)行,最終生查詢結(jié)果或報(bào)告錯(cuò)誤信息。即獲得最終的執(zhí)行計(jì)劃,并對(duì)其作出解釋和執(zhí)行,從而得出最終的正確結(jié)果或錯(cuò)誤信息。查詢執(zhí)行引擎充分考慮數(shù)據(jù)的存儲(chǔ)分布、大小、元組的排序情況和存取路徑等,利用它們提高關(guān)系操作的運(yùn)算效率。
[0052]為了選擇最高效的查詢計(jì)劃,需要判斷:
[0053](I)當(dāng)前查詢語句,有哪幾種等價(jià)形式,根據(jù)當(dāng)前數(shù)據(jù)庫的實(shí)現(xiàn)機(jī)制,哪種等價(jià)形式有著較高的執(zhí)行效率。
[0054](2)根據(jù)查詢語句所操作表的不同,查詢條件的不同,選擇不同的執(zhí)行流程、算法,使語句執(zhí)行操作達(dá)到最優(yōu)。
[0055](3)對(duì)最優(yōu)執(zhí)行計(jì)劃中的每個(gè)操作選擇最優(yōu)的執(zhí)行算法。
[0056](4)對(duì)解析后的執(zhí)行體序列重新組合,轉(zhuǎn)換,使得執(zhí)行序列所費(fèi)時(shí)間最短。
[0057]通過計(jì)劃優(yōu)化,在查詢語句處理的不同階段,通過有效的控制,讓優(yōu)化器解析成最優(yōu)的執(zhí)行序列,最后交由查詢執(zhí)行引擎執(zhí)行。
[0058]本發(fā)明查詢優(yōu)化的目標(biāo)是選擇最有效的查詢執(zhí)行計(jì)劃。假定S是適合該查詢的所有策略的集合,S
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
湖口县| 家居| 惠水县| 内黄县| 姜堰市| 海林市| 邮箱| 宜昌市| 沅江市| 石泉县| 沛县| 凤城市| 义马市| 新安县| 韶山市| 富蕴县| 文安县| 涿州市| 安陆市| 镇赉县| 凤台县| 淮安市| 和硕县| 托克逊县| 离岛区| 彰化县| 盈江县| 华阴市| 屏山县| 壤塘县| 蕉岭县| 秭归县| 万荣县| 高阳县| 岳普湖县| 奉贤区| 玉林市| 乌拉特前旗| 永年县| 徐水县| 鞍山市|