專利名稱:優(yōu)化數(shù)據(jù)庫(kù)中訪問(wèn)路徑的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)的訪問(wèn),更具體而言,涉及優(yōu)化數(shù)據(jù)庫(kù)中訪問(wèn)路徑的方法和裝置。
背景技術(shù):
在數(shù)據(jù)庫(kù)中進(jìn)行訪問(wèn)和檢索的過(guò)程中,為了執(zhí)行查詢,數(shù)據(jù)庫(kù)需要?jiǎng)?chuàng)建一個(gè)訪問(wèn)計(jì)劃(access plan)。訪問(wèn)計(jì)劃定義按什么順序訪問(wèn)表,使用哪些索引,以及用何種連接(join)方法來(lái)關(guān)聯(lián)數(shù)據(jù)。好的訪問(wèn)計(jì)劃對(duì)于SQL語(yǔ)句的快速執(zhí)行至關(guān)重要。大多數(shù)的RDBMS(關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))利用基于成本的優(yōu)化器進(jìn)行訪問(wèn)計(jì)劃的創(chuàng)建?;诔杀镜膬?yōu)化器根據(jù)數(shù)據(jù)庫(kù)中的統(tǒng)計(jì)信息評(píng)估各個(gè)備選訪問(wèn)路徑的成本,從中選擇成本最低的訪問(wèn)路徑作為最優(yōu)路徑。上述的成本主要包括CPU執(zhí)行成本,IO成本等。在計(jì)算各個(gè)備選訪問(wèn)路徑的成本時(shí),優(yōu)化器主要根據(jù)表和索引的相關(guān)統(tǒng)計(jì)信息以及查詢語(yǔ)句的過(guò)濾因子來(lái)進(jìn)行評(píng)估。過(guò)濾因子表示,利用查詢語(yǔ)句中指定的條件進(jìn)行“過(guò)濾”,能夠從數(shù)據(jù)庫(kù)的指定范圍中選擇出的數(shù)據(jù)條目相比于該指定范圍中的總數(shù)據(jù)條目的比例。過(guò)濾因子對(duì)于優(yōu)化器創(chuàng)建有效的訪問(wèn)計(jì)劃非常重要。在一個(gè)非常簡(jiǎn)單的例子里,假定數(shù)據(jù)庫(kù)中存儲(chǔ)了一份某電腦配件的銷售信息統(tǒng)計(jì)表T,該統(tǒng)計(jì)表共有100行,其中95行涉及型號(hào)A,另外5行涉及型號(hào)B,在該表的第2列記載了上述型號(hào)信息。如果用查詢語(yǔ)句SELECT*FR0M T WHERE C0LUMN_2 = ‘A’進(jìn)行查詢,也就是用型號(hào)=A作為謂詞進(jìn)行過(guò)濾,將會(huì)返回95條數(shù)據(jù)條目,過(guò)濾因子為95%。對(duì)于這樣的過(guò)濾條件和過(guò)濾因子,數(shù)據(jù)庫(kù)管理系統(tǒng)的優(yōu)化器經(jīng)過(guò)簡(jiǎn)單的計(jì)算就可以得出,直接掃描并判斷統(tǒng)計(jì)表T的每一行,從中讀取第二欄為A的數(shù)據(jù)條目是一種較為經(jīng)濟(jì)的訪問(wèn)路徑。在另一種情況下,如果用型號(hào)=B作為謂詞進(jìn)行過(guò)濾,將會(huì)返回5條數(shù)據(jù)條目,過(guò)濾因子為5%。此時(shí),優(yōu)化器經(jīng)過(guò)計(jì)算會(huì)得出,首先讀取統(tǒng)計(jì)表的索引,根據(jù)索引中記錄的指針直接訪問(wèn)第二欄為B的數(shù)據(jù)條目是較為優(yōu)選的訪問(wèn)路徑。由此可以看到,在優(yōu)化器創(chuàng)建訪問(wèn)計(jì)劃的過(guò)程中,過(guò)濾因子起著非常重要的作用。過(guò)濾因子的不同通常使得優(yōu)化器創(chuàng)建不同的訪問(wèn)路徑。并且,過(guò)濾因子的大小緊密依賴于表格中數(shù)據(jù)的分布和查詢語(yǔ)句中指定的過(guò)濾條件的字面值(literal value),也就是以上例子中的’ A’或’ B’。然而,在許多情況下,過(guò)濾因子并不能如上述例子那樣簡(jiǎn)單而直接地獲得。例如,在典型的嵌入式SQL的情況下,SQL語(yǔ)句嵌入在主應(yīng)用程序中,并在查詢語(yǔ)句中引用主程序中的變量或參數(shù),例如SELECT*FR0M TffHERE C0LUMN_2 = varl,其中varl是一個(gè)變量。于是,過(guò)濾條件中的字面值和過(guò)濾因子的大小直接依賴于變量的值。然而,變量的值通常在程序運(yùn)行時(shí)才能確定。并且,在一些情況下,應(yīng)用程序多次重復(fù)執(zhí)行同一查詢語(yǔ)句,但是每次執(zhí)行該查詢語(yǔ)句時(shí),運(yùn)行時(shí)產(chǎn)生的變量的值可能是不同的。由于無(wú)法在該查詢語(yǔ)句的執(zhí)行之前準(zhǔn)確確定過(guò)濾條件中的字面值,因此提出了多種方法來(lái)估計(jì)過(guò)濾因子,從而優(yōu)化訪問(wèn)路徑。在一種訪問(wèn)路徑優(yōu)化方案中,優(yōu)化器基于變量值平均分布的假設(shè)估計(jì)出一個(gè)可能的過(guò)濾因子,并基于估計(jì)出的過(guò)濾因子創(chuàng)建一個(gè)經(jīng)濟(jì)的訪問(wèn)路徑。在確定了查詢語(yǔ)句的訪問(wèn)路徑之后,每次執(zhí)行該查詢語(yǔ)句時(shí),就按照預(yù)先創(chuàng)建的訪問(wèn)路徑來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。仍然參照上述電腦配件的銷售信息統(tǒng)計(jì)表T的例子,對(duì)于查詢語(yǔ)句SELECT*FROM T WHERE C0LUMN_2=varl,由于第二列中有兩種可能值A(chǔ)和B,因此優(yōu)化器會(huì)平均地認(rèn)為,該查詢語(yǔ)句的過(guò)濾因子為50%,并基于該過(guò)濾因子創(chuàng)建一個(gè)固定的訪問(wèn)路徑。可以看出,在該優(yōu)化方案中,訪問(wèn)路徑是預(yù)先確定的,因此具有穩(wěn)定、可預(yù)測(cè)的優(yōu)點(diǎn)。然而,在表格中數(shù)據(jù)的分布偏離優(yōu)化器所假設(shè)的平均分布的情況下,該方案估計(jì)的過(guò)濾因子就不夠準(zhǔn)確,由此會(huì)得出一個(gè)效率很低的訪問(wèn)計(jì)劃。在另一種優(yōu)化方案中,優(yōu)化器假定查詢語(yǔ)句執(zhí)行時(shí)產(chǎn)生的第一個(gè)字面值更加具有代表性,由此估計(jì)出的過(guò)濾因子比平均分布的假設(shè)更加接近實(shí)際情況。相應(yīng)地,優(yōu)化器基于由此估計(jì)的過(guò)濾因子創(chuàng)建訪問(wèn)路徑,并將創(chuàng)建的訪問(wèn)路徑進(jìn)行緩存用于查詢語(yǔ)句的后續(xù)執(zhí)行。于是,每次執(zhí)行該查詢語(yǔ)句時(shí),就按照緩存的訪問(wèn)路徑來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。參照上述銷售信息統(tǒng)計(jì)表T和查詢語(yǔ)句SELECT*FR0M T WHERE C0LUMN_2 = varl的例子,如果第一次執(zhí)行該查詢語(yǔ)句時(shí),varl被賦值為B,那么優(yōu)化器就基于過(guò)濾因子5%創(chuàng)建訪問(wèn)路徑。在這種優(yōu)化方案下,可以理解,如果第一次產(chǎn)生的字面值B確實(shí)具有足夠的代表性,或者說(shuō),在接下來(lái)的查詢執(zhí)行中,字面值B出現(xiàn)頻率足夠大,那么創(chuàng)建的訪問(wèn)路徑對(duì)于該查詢語(yǔ)句的后續(xù)執(zhí)行都比較有效。然而,如果第一次產(chǎn)生的字面值恰好不是最常使用的值,例如,在后續(xù)執(zhí)行時(shí),varl的值都是A,那么優(yōu)化器所創(chuàng)建的訪問(wèn)路徑將會(huì)使得該查詢語(yǔ)句的后續(xù)執(zhí)行效率非常低下。因此,該優(yōu)化方案的執(zhí)行性能波動(dòng)較大,不夠穩(wěn)定。在另一種優(yōu)化方案中,優(yōu)化器在查詢語(yǔ)句的執(zhí)行過(guò)程中動(dòng)態(tài)進(jìn)行優(yōu)化。每次執(zhí)行該查詢語(yǔ)句,優(yōu)化器就根據(jù)實(shí)際產(chǎn)生的字面值估計(jì)過(guò)濾因子,然后創(chuàng)建經(jīng)濟(jì)的訪問(wèn)路徑。很明顯,這種優(yōu)化方案對(duì)于找出最優(yōu)的訪問(wèn)路徑比較有效。然而,由于每次都重新估計(jì)過(guò)濾因子并重新創(chuàng)建訪問(wèn)計(jì)劃,執(zhí)行該優(yōu)化方案的成本甚至可能大于執(zhí)行查詢的成本,產(chǎn)生的運(yùn)行時(shí)開(kāi)銷常常超出可以忍受的范圍。并且,持續(xù)地產(chǎn)生或改變?cè)L問(wèn)路徑使得訪問(wèn)路徑的監(jiān)視和追蹤非常困難。在又一種優(yōu)化方案中,優(yōu)化器在每次執(zhí)行查詢語(yǔ)句時(shí)重新評(píng)估過(guò)濾因子,并判斷之前創(chuàng)建的訪問(wèn)路徑是否適合于新獲得的過(guò)濾因子。如果過(guò)濾因子與緩存的訪問(wèn)路徑不兼容,則重新創(chuàng)建訪問(wèn)路徑。盡管這種方案相比于每次重新優(yōu)化的方案減小了一部分開(kāi)銷,但仍然具有其幾乎所有的不足。由于優(yōu)化器仍然需要在每次執(zhí)行查詢語(yǔ)句時(shí)重新評(píng)估過(guò)濾因子,并在必要時(shí)重新優(yōu)化,成本依然很高。因此,希望提出更好的優(yōu)化方案來(lái)提高數(shù)據(jù)庫(kù)優(yōu)化器的優(yōu)化性能。
發(fā)明內(nèi)容
鑒于以上提出的問(wèn)題,提出本發(fā)明,旨在提高數(shù)據(jù)庫(kù)中訪問(wèn)路徑優(yōu)化的優(yōu)化效果和執(zhí)行效率。根據(jù)本發(fā)明第一方面,提供一種優(yōu)化數(shù)據(jù)庫(kù)中訪問(wèn)路徑的方法,包括:對(duì)查詢語(yǔ)句的執(zhí)行情況進(jìn)行采樣,獲取多個(gè)執(zhí)行實(shí)例的信息,每一執(zhí)行實(shí)例的信息包括該執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值以及該字面值對(duì)應(yīng)的過(guò)濾因子;基于所述字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和該群組的出現(xiàn)頻率;獲取針對(duì)每個(gè)群組的平均過(guò)濾因子而創(chuàng)建的備選訪問(wèn)路徑;以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本總和最小的備選訪問(wèn)路徑確定為優(yōu)選訪問(wèn)路徑。根據(jù)本發(fā)明第二方面,提供一種優(yōu)化數(shù)據(jù)庫(kù)中訪問(wèn)路徑的裝置,包括:實(shí)例信息獲取單元,配置為對(duì)查詢語(yǔ)句的執(zhí)行情況進(jìn)行采樣,獲取多個(gè)執(zhí)行實(shí)例的信息,每一執(zhí)行實(shí)例的信息包括該執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值以及該字面值對(duì)應(yīng)的過(guò)濾因子;分組單元,配置為基于所述字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和該群組的出現(xiàn)頻率;備選路徑獲取單元,配置為獲取針對(duì)每個(gè)群組的平均過(guò)濾因子而創(chuàng)建的備選訪問(wèn)路徑;優(yōu)選路徑確定單元,配置為以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本總和最小的備選訪問(wèn)路徑確定為優(yōu)選訪問(wèn)路徑。通過(guò)本發(fā)明實(shí)施例的方法和裝置,能夠基于查詢語(yǔ)句的執(zhí)行歷史獲得字面值和過(guò)濾因子的使用情況,并基于過(guò)濾因子的使用情況確定出優(yōu)選的訪問(wèn)路徑。由此獲得的訪問(wèn)路徑能夠在更大概率上適合于查詢語(yǔ)句接下來(lái)的執(zhí)行,從而提高路徑優(yōu)化的效果。
圖1示出根據(jù)本發(fā)明一個(gè)實(shí)施例的優(yōu)化訪問(wèn)路徑的方法的流程圖;圖2不出用戶信息表格Tl的統(tǒng)計(jì)信息的一個(gè)例子;圖3示出執(zhí)行實(shí)例的信息的一個(gè)例子;圖4示出根據(jù)本發(fā)明一個(gè)實(shí)施例的分組步驟的子步驟;圖5A示出由圖3的執(zhí)行實(shí)例得到的類的例子;圖5B示出執(zhí)行實(shí)例的群組的例子;圖6A-6B示出多個(gè)群組在多個(gè)訪問(wèn)路徑下的執(zhí)行成本的例子;圖7A示出執(zhí)行實(shí)例的信息另一個(gè)例子;圖7B示出執(zhí)行實(shí)例的群組的另一個(gè)例子;圖7C示出訪問(wèn)路徑的執(zhí)行成本的交叉核查的例子;圖8示出根據(jù)本發(fā)明一個(gè)實(shí)施例的優(yōu)化訪問(wèn)路徑的裝置的框圖;以及圖9示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)的框圖。
具體實(shí)施例方式下面對(duì)本發(fā)明的具體實(shí)施方式
進(jìn)行詳細(xì)描述。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明的多個(gè)方面可以體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的多個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等)、或者本文一般稱為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的組合。此外,本發(fā)明的多個(gè)方面還可以采取體現(xiàn)在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可用的程序碼??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電的、磁的、光的、電磁的、紅外線的、或半導(dǎo)體的系統(tǒng)、裝置、器件或任何以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括以下:有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任何合適的組合。在本文件的語(yǔ)境中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形的介質(zhì),該程序被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可包括在基帶中或者作為載波一部分傳播的、其中體現(xiàn)計(jì)算機(jī)可讀的程序碼的傳播的數(shù)據(jù)信號(hào)。這種傳播的信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或任何以上合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以是并非為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、但是能發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序的任何計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于——無(wú)線、電線、光纜、RF等等,或者任何合適的上述組合。用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序碼,可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任何組合來(lái)編寫(xiě),所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-諸如Java、Smalltalk、C++之類,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言-諸如“C”程序設(shè)計(jì)語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序碼可以完全地在用戶的計(jì)算上執(zhí)行、部分地在用戶的計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶的計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一種情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任何種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶的計(jì)算機(jī),或者,可以(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng))連接到外部計(jì)算機(jī)。以下參照按照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明的多個(gè)方面。要明白的是,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行的這些指令,產(chǎn)生實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能指令計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品。也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上,使得在計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令就提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過(guò)程。以下結(jié)合附圖描述本發(fā)明的具體實(shí)施例。但是應(yīng)該理解,以下對(duì)具體實(shí)施例的描述僅僅是為了解釋本發(fā)明的執(zhí)行示例,而不對(duì)本發(fā)明的范圍進(jìn)行任何限定。在本發(fā)明的多個(gè)實(shí)施例中,考慮重復(fù)執(zhí)行的查詢語(yǔ)句的執(zhí)行歷史,根據(jù)歷史統(tǒng)計(jì)信息獲取查詢語(yǔ)句中各個(gè)字面值的使用情況,通過(guò)綜合考慮字面值對(duì)應(yīng)的過(guò)濾因子和字面值的使用頻率來(lái)估計(jì)出優(yōu)選的訪問(wèn)路徑。圖1示出根據(jù)本發(fā)明一個(gè)實(shí)施例的優(yōu)化訪問(wèn)路徑的方法的流程圖,更具體地,該方法用于對(duì)多次重復(fù)執(zhí)行的查詢語(yǔ)句在數(shù)據(jù)庫(kù)中的訪問(wèn)路徑進(jìn)行優(yōu)化。如圖所示,該優(yōu)化方法包括如下步驟。在步驟11,對(duì)查詢語(yǔ)句的執(zhí)行情況進(jìn)行采樣,獲取多個(gè)執(zhí)行實(shí)例的信息,每一執(zhí)行實(shí)例的信息包括該執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值以及該字面值對(duì)應(yīng)的過(guò)濾因子;在步驟12,基于所述字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率;在步驟13,獲取針對(duì)每個(gè)群組的平均過(guò)濾因子而創(chuàng)建的備選訪問(wèn)路徑;在步驟14,以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本的總和最小的備選訪問(wèn)路徑作為優(yōu)選訪問(wèn)路徑。以下結(jié)合具體例子描述上述各個(gè)步驟的具體執(zhí)行方式。在一個(gè)例子中,表格Tl是用戶信息統(tǒng)計(jì)表,其中某一列COUNTRY記錄了用戶的國(guó)籍信息。在一個(gè)應(yīng)用中需要多次重復(fù)執(zhí)行查詢語(yǔ)句SELECT *FR0M Tl WHERE COUNTRY =var。在最初的執(zhí)行過(guò)程中,可以基于例如現(xiàn)有技術(shù)中的平均分布假設(shè)估計(jì)過(guò)濾因子并創(chuàng)建訪問(wèn)路徑。為了對(duì)訪問(wèn)路徑進(jìn)行優(yōu)化使其更加適合于該查詢語(yǔ)句的后續(xù)執(zhí)行,在步驟11,對(duì)該查詢語(yǔ)句的執(zhí)行情況進(jìn)行監(jiān)視和采樣。具體地,在之前的執(zhí)行過(guò)程中,該查詢語(yǔ)句的每一次執(zhí)行可以稱為一個(gè)執(zhí)行實(shí)例(instance)??梢圆捎枚喾N方式監(jiān)視查詢語(yǔ)句的執(zhí)行,進(jìn)而獲得各個(gè)執(zhí)行實(shí)例的基本信息。例如,數(shù)據(jù)庫(kù)內(nèi)部通常會(huì)以trace的形式記錄各個(gè)查詢的信息,包括查詢中的參數(shù)、字面值、訪問(wèn)路徑等等。通過(guò)讀取數(shù)據(jù)庫(kù)trace中的記錄,即可獲取各個(gè)執(zhí)行實(shí)例的基本信息?;蛘?,在另一例子中,對(duì)執(zhí)行包含該查詢語(yǔ)句的應(yīng)用程序的運(yùn)行時(shí)進(jìn)行監(jiān)視,以獲得每個(gè)執(zhí)行實(shí)例下變量的賦值,即查詢條件中的字面值。本領(lǐng)域技術(shù)人員也可以采用其他方式監(jiān)視查詢語(yǔ)句的執(zhí)行。對(duì)查詢語(yǔ)句的執(zhí)行實(shí)例的監(jiān)視和采樣可以基于一個(gè)特定時(shí)間段,該時(shí)間段長(zhǎng)度例如可以是一天,一個(gè)星期,一個(gè)月等等。在一個(gè)例子中,可以獲取指定時(shí)間段內(nèi)所有執(zhí)行實(shí)例的基本信息;或者,在另一個(gè)例子中,可以用其他方式進(jìn)行部分采樣,例如對(duì)執(zhí)行時(shí)間段內(nèi)的執(zhí)行實(shí)例進(jìn)行隨機(jī)采樣。對(duì)于采樣得到的多個(gè)執(zhí)行實(shí)例,可以如上所述容易地獲得每個(gè)執(zhí)行實(shí)例下的字面值。進(jìn)一步地,基于獲得的字面值,結(jié)合查詢語(yǔ)句針對(duì)的表格Tl的統(tǒng)計(jì)信息,可以估計(jì)出每個(gè)字面值對(duì)應(yīng)的過(guò)濾因子。本領(lǐng)域技術(shù)人員可以理解,為了便于數(shù)據(jù)查詢,數(shù)據(jù)庫(kù)中存儲(chǔ)有各個(gè)表格的統(tǒng)計(jì)信息。例如,Tl表格的統(tǒng)計(jì)信息包含有各個(gè)列中的可能值,這些值的分布情況等。圖2示出表格Tl的統(tǒng)計(jì)信息的一個(gè)例子。這個(gè)例子中示出了 Tl中COUNTRY列的統(tǒng)計(jì)信息。具體地,在圖2的統(tǒng)計(jì)信息中,第一列記錄了 COUNTRY列中可能的字面值,第二列記錄了各個(gè)字面值在Tl的COUNTRY列的出現(xiàn)情況。由圖2的統(tǒng)計(jì)信息可見(jiàn),Tl的COUNTRY列共有5種可能值,其中值“China”在Tl的1000行中占據(jù)了 886行,出現(xiàn)頻率為88.6%。一般地,可以將統(tǒng)計(jì)信息中的出現(xiàn)頻率作為過(guò)濾因子的估計(jì)值。由此,可以獲得各個(gè)字面值對(duì)應(yīng)的過(guò)濾因子。在另一些情況下,查詢語(yǔ)句的過(guò)濾條件或者謂詞可能非常復(fù)雜,因此不易通過(guò)參考數(shù)據(jù)庫(kù)中的統(tǒng)計(jì)信息獲取到過(guò)濾因子。在這樣的情況下,可以針對(duì)該謂詞執(zhí)行count語(yǔ)句,獲取執(zhí)行結(jié)果,根據(jù)執(zhí)行結(jié)果計(jì)算過(guò)濾因子??梢岳斫?,本領(lǐng)域技術(shù)人員能夠根據(jù)不同的情況采用不同的方式來(lái)進(jìn)行過(guò)濾因子的估算。于是,對(duì)于采樣獲得的多個(gè)執(zhí)行實(shí)例,可以獲得每一執(zhí)行實(shí)例的信息,包括該執(zhí)行實(shí)例下的字面值,以及該字面值對(duì)應(yīng)的過(guò)濾因子。在一個(gè)例子中,通過(guò)對(duì)查詢語(yǔ)句SELECT*FR0M Tl WHERE COUNTRY = var的執(zhí)行情況進(jìn)行采樣獲得了 100條執(zhí)行實(shí)例,并相應(yīng)獲得了每個(gè)執(zhí)行實(shí)例的字面值。通過(guò)結(jié)合圖2所示的統(tǒng)計(jì)信息,進(jìn)一步獲得了各個(gè)字面值對(duì)應(yīng)的過(guò)濾因子。由此,可以獲得圖3所示的執(zhí)行實(shí)例的信息。具體地,圖3的表格包含了 100行,每一行對(duì)應(yīng)一條執(zhí)行實(shí)例。并且,該表格分別在第二列和第三列示出執(zhí)行實(shí)例下采用的字面值和對(duì)應(yīng)的過(guò)濾因子?;趫D3的表格,可以了解該查詢語(yǔ)句在過(guò)去一段時(shí)間內(nèi)的執(zhí)行情況。在一個(gè)例子中,在對(duì)執(zhí)行實(shí)例進(jìn)行采樣的同時(shí),還對(duì)單個(gè)字面值的出現(xiàn)次數(shù)進(jìn)行計(jì)數(shù)和統(tǒng)計(jì),以示出各個(gè)字面值的使用情況。例如,通過(guò)對(duì)圖3的100條執(zhí)行實(shí)例進(jìn)行統(tǒng)計(jì)可以獲知,在100次采樣中,有89次字面值為“China”,有6次字面值為“Vietnam”,有4次字面值為“Thailand”,有I次字面值為“Cambodia”。字面值“China”的使用頻率最高,為89%。這些信息補(bǔ)充記載在圖3的附加信息欄中。在另一實(shí)施方式中,對(duì)字面值的使用情況的統(tǒng)計(jì)可以在后續(xù)步驟中進(jìn)行。在這種情況下,圖3不包含附加信息欄。字面值的使用頻率是查詢語(yǔ)句之前的執(zhí)行歷史的反映,也可用作對(duì)接下來(lái)的執(zhí)行情況的預(yù)測(cè)。如果某個(gè)字面值的使用頻率較高,那么可以合理地預(yù)測(cè),該字面值在接下來(lái)的執(zhí)行中出現(xiàn)的概率也比較大。因此,在進(jìn)行路徑優(yōu)化時(shí)考慮各個(gè)字面值的使用頻率可以使得優(yōu)化的路徑更好地適合于查詢語(yǔ)句接下來(lái)的執(zhí)行情況。然而,一般來(lái)說(shuō),一個(gè)查詢語(yǔ)句通常具有很多個(gè)可能的字面值。如果針對(duì)每個(gè)字面值的過(guò)濾因子和使用情況進(jìn)行路徑優(yōu)化可能會(huì)帶來(lái)過(guò)大的計(jì)算開(kāi)銷。因此,在本發(fā)明的多個(gè)實(shí)施例中,對(duì)獲得的執(zhí)行實(shí)例進(jìn)行分組,針對(duì)每組的過(guò)濾因子和該組的出現(xiàn)頻率進(jìn)行訪問(wèn)路徑的優(yōu)化,也就是執(zhí)行圖1的步驟12。具體地,在步驟12中,基于各個(gè)執(zhí)行實(shí)例中字面值對(duì)應(yīng)的過(guò)濾因子將獲得的多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和該群組的出現(xiàn)頻率。在一個(gè)實(shí)施例中,分兩個(gè)子步驟來(lái)執(zhí)行步驟12。圖4示出根據(jù)本發(fā)明一個(gè)實(shí)施例的步驟12的子步驟。如圖所示,首先在步驟121,基于字面值將獲得的多個(gè)執(zhí)行實(shí)例劃分多個(gè)類,獲取每個(gè)類的過(guò)濾因子和出現(xiàn)頻率;接著在步驟122,基于每個(gè)類中的過(guò)濾因子將所述多個(gè)類合并為多個(gè)群組,基于每個(gè)類的過(guò)濾因子和出現(xiàn)頻率獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率。下面結(jié)合圖3的執(zhí)行實(shí)例的信息來(lái)描述以上子步驟。在子步驟121,基于執(zhí)行實(shí)例中的字面值對(duì)執(zhí)行實(shí)例進(jìn)行歸類。具體地,可以將字面值相同的執(zhí)行實(shí)例歸為一個(gè)類,將該相同字面值對(duì)應(yīng)的過(guò)濾因子作為該類的過(guò)濾因子,并獲取該字面值的使用頻率作為該類的出現(xiàn)頻率。在圖3所示的100個(gè)執(zhí)行實(shí)例中,共出現(xiàn)了 4個(gè)不同的字面值,據(jù)此可以將100個(gè)執(zhí)行實(shí)例歸為4個(gè)類,如圖5A所示。在圖5A中,第一個(gè)類對(duì)應(yīng)于字面值為“China”的多個(gè)執(zhí)行實(shí)例。根據(jù)圖3的信息,該字面值“China”對(duì)應(yīng)的過(guò)濾因子為88.6%??梢杂迷撨^(guò)濾因子代表這個(gè)類的過(guò)濾因子。進(jìn)一步地,由于將所有字面值為“China”的執(zhí)行實(shí)例都?xì)w為第一個(gè)類,因此該類中的執(zhí)行實(shí)例的數(shù)目就等于字面值為“China”的執(zhí)行實(shí)例的數(shù)目。如果將一個(gè)類的出現(xiàn)頻率定義為該類中執(zhí)行實(shí)例的數(shù)目相對(duì)于所有執(zhí)行實(shí)例的數(shù)目的比例,那么顯然,類的出現(xiàn)頻率等于該類中字面值的使用頻率。
在一個(gè)例子中,在對(duì)執(zhí)行實(shí)例進(jìn)行采樣從而生成圖3所示的執(zhí)行實(shí)例信息表的過(guò)程中,已經(jīng)對(duì)字面值的使用頻率進(jìn)行了統(tǒng)計(jì)。在這種情況下,通過(guò)參照?qǐng)D3的附加信息欄就可以獲得各個(gè)類的字面值使用頻率,并將其作為該類的出現(xiàn)頻率。在另一個(gè)例子中,執(zhí)行實(shí)例信息表中并沒(méi)有示出字面值的使用頻率。此時(shí),在對(duì)各個(gè)執(zhí)行實(shí)例進(jìn)行歸類的過(guò)程中,對(duì)每個(gè)類中的執(zhí)行實(shí)例的數(shù)目進(jìn)行計(jì)數(shù)和統(tǒng)計(jì),從而直接獲得每個(gè)類的出現(xiàn)頻率。在圖5A所示的例子中,在表的第3列示出了每個(gè)類的出現(xiàn)頻率,例如第一個(gè)類的出現(xiàn)頻率為89%,對(duì)應(yīng)于圖3的附加信息欄中所示的字面值(“China”)的使用頻率。接著,對(duì)于如圖5A所示的類,執(zhí)行子步驟122,基于每個(gè)類中的過(guò)濾因子將多個(gè)類合并為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率。在一個(gè)例子中,根據(jù)過(guò)濾因子之間的“距離”來(lái)劃分群組。例如,將過(guò)濾因子之間距離在預(yù)定閾值,例如5%之內(nèi)的類合并為一個(gè)群組。由此,圖5A所示的類2-4就可以合并為一個(gè)群組,類I作為一個(gè)單獨(dú)的群組。在其他實(shí)施方式中,可以根據(jù)其他標(biāo)準(zhǔn)進(jìn)行聚類從而獲得群組。例如,可以將過(guò)濾因子的值劃分為多個(gè)區(qū)間,將過(guò)濾因子屬于同一區(qū)間的類合并為一個(gè)群組。本領(lǐng)域技術(shù)人員還可以想到其他的聚類方式,這些都在本發(fā)明的構(gòu)思范圍之內(nèi)。對(duì)于獲得的群組,計(jì)算每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率。由于群組是通過(guò)將多個(gè)類進(jìn)行合并而獲得的,因此,群組的出現(xiàn)頻率可以計(jì)算為該群組下各個(gè)類的出現(xiàn)頻率的和。對(duì)于過(guò)濾因子,可以通過(guò)多種方式求得其平均值作為群組的平均過(guò)濾因子。在一個(gè)實(shí)施例中,平均過(guò)濾因子可以計(jì)算為群組中各個(gè)類的過(guò)濾因子的算術(shù)平均。在另一個(gè)實(shí)施例中,可以以群組中各個(gè)類的相對(duì)出現(xiàn)頻率為權(quán)重,計(jì)算各個(gè)類的過(guò)濾因子的加權(quán)平均。也就是說(shuō),可以定義權(quán)重因子為群組中各個(gè)類的出現(xiàn)頻率相對(duì)于該群組的總出現(xiàn)頻率的比例,利用該權(quán)重因子計(jì)算過(guò)濾因子的加權(quán)平均作為該群組的平均過(guò)濾因子。圖5B示出執(zhí)行實(shí)例的群組的例子。如圖所示,根據(jù)過(guò)濾因子的大小,將圖5A中的類I單獨(dú)作為群組1,將類2-4合并為群組2。對(duì)于群組1,其出現(xiàn)頻率即為類I的出現(xiàn)頻率89% ;對(duì)于群組2,其出現(xiàn)頻率為圖5A中類2-4的出現(xiàn)頻率的和,即11%。在圖5B的例子中,采用加權(quán)平均的方式計(jì)算群組的平均過(guò)濾因子。因此,群組2的過(guò)濾因子計(jì)算為5.6%* 6% /11% +4.5% * 4% /11% +1.3*1% /11%= 4.8%。由此獲得每個(gè)群組的出現(xiàn)頻率和平均過(guò)濾因子。通過(guò)圖5A到圖5B的示例,可以看到將執(zhí)行實(shí)例劃分為群組的一種實(shí)施方式。容易理解,執(zhí)行實(shí)例的數(shù)目Ni,類的數(shù)目Ne和群組的數(shù)目Ng滿足如下關(guān)系:I < = Ng < = Ne<=Ni。一般地,Ni的數(shù)目遠(yuǎn)遠(yuǎn)大于Ng和Ne的數(shù)目。但是,取決于聚類的規(guī)則,類的數(shù)目Ne和群組的數(shù)目Ng有可能相等。盡管以上詳細(xì)描述了首先將執(zhí)行實(shí)例劃分為類,再將類合并為群組的實(shí)施方式,但是可以理解,本領(lǐng)域技術(shù)人員還可以采用其他方式獲取執(zhí)行實(shí)例的群組。在一個(gè)實(shí)施例中,可以直接基于例如圖3所示的執(zhí)行實(shí)例的信息表將執(zhí)行實(shí)例劃分為群組。例如,可以在逐一掃描每一執(zhí)行實(shí)例時(shí),基于字面值對(duì)應(yīng)的過(guò)濾因子直接判斷該執(zhí)行實(shí)例應(yīng)該劃分到哪個(gè)群組;并且,在將該執(zhí)行實(shí)例放入對(duì)應(yīng)群組的過(guò)程中,對(duì)執(zhí)行實(shí)例的數(shù)目進(jìn)行計(jì)數(shù),并對(duì)過(guò)濾因子進(jìn)行累加。如此,在掃描完所有執(zhí)行實(shí)例之后,就可以直接獲得執(zhí)行實(shí)例的群組。并且,由于已經(jīng)對(duì)每個(gè)群組中執(zhí)行實(shí)例的數(shù)目進(jìn)行計(jì)數(shù),并對(duì)過(guò)濾因子進(jìn)行了累加,同樣可以容易地獲得每個(gè)群組的出現(xiàn)頻率和加權(quán)計(jì)算的平均過(guò)濾因子。由此,可以從圖3所示的執(zhí)行實(shí)例的信息直接獲得圖5B所示的群組信息,而不必先獲得圖5A所示的類的信息。除此之外,本領(lǐng)域技術(shù)人員在閱讀本說(shuō)明書(shū)的基礎(chǔ)上還可以對(duì)形成群組的方式進(jìn)行多種改動(dòng),例如改變劃分群組的規(guī)則,改變出現(xiàn)頻率/平均過(guò)濾因子的計(jì)算方式等等,從而獲得更多的或不同的實(shí)施方式。這些實(shí)施方式都應(yīng)包含在本發(fā)明的構(gòu)思范圍之內(nèi)。在獲得形成的多個(gè)群組的基礎(chǔ)上,利用優(yōu)化器引擎,可以獲得針對(duì)每個(gè)群組創(chuàng)建的訪問(wèn)路徑,即,執(zhí)行圖1的步驟13。具體地,優(yōu)化器引擎可以根據(jù)過(guò)濾因子為查詢語(yǔ)句創(chuàng)建一條經(jīng)濟(jì)的訪問(wèn)路徑,并可以計(jì)算出該訪問(wèn)路徑的執(zhí)行成本。為了確定步驟12中獲得的各個(gè)群組所適合的訪問(wèn)路徑,可以在步驟13,將各個(gè)群組的平均過(guò)濾因子發(fā)送給優(yōu)化器引擎。于是,優(yōu)化器引擎會(huì)基于接收到的過(guò)濾因子確定出優(yōu)選的訪問(wèn)路徑。由此,可以獲得基于每個(gè)群組的平均過(guò)濾因子產(chǎn)生的訪問(wèn)路徑,在此將這樣的訪問(wèn)路徑稱為備選訪問(wèn)路徑。在一個(gè)例子中,對(duì)于圖5B所示的群組,可以分別從優(yōu)化器引擎獲得針對(duì)群組I和2產(chǎn)生的備選訪問(wèn)路徑A和B。接下來(lái),判斷所獲得的多個(gè)備選訪問(wèn)路徑,例如A和B,中哪一條訪問(wèn)路徑對(duì)于整個(gè)群組的集合更加經(jīng)濟(jì)。這就需要對(duì)每個(gè)備選訪問(wèn)路徑和每個(gè)群組進(jìn)行交叉核查,基于交叉核查的結(jié)果確定優(yōu)選的訪問(wèn)路徑,如步驟14所示。具體地,在步驟14中,以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本的總和最小的備選訪問(wèn)路徑確定為優(yōu)選訪問(wèn)路徑。為了執(zhí)行步驟14,首先,從優(yōu)化器引擎獲得每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的執(zhí)行成本。如前所述,對(duì)于給定的過(guò)濾因子f和訪問(wèn)路徑P,優(yōu)化器引擎可以計(jì)算出,在過(guò)濾因子為f的情況下,按照訪問(wèn)路徑P執(zhí)行查詢語(yǔ)句產(chǎn)生的執(zhí)行成本。那么,基于步驟12中獲得的各個(gè)群組的平均過(guò)濾因子以及步驟13中獲得的各個(gè)群組的備選訪問(wèn)路徑,優(yōu)化器引擎能夠提供每個(gè)備選訪問(wèn)路徑在每個(gè)群組的平均過(guò)濾因子的情況下的執(zhí)行成本。例如,對(duì)于圖5B所示的群組1-2以及步驟13中針對(duì)各個(gè)群組確定出的備選訪問(wèn)路徑A和B,可以獲得圖6A所示的執(zhí)行成本。如圖6A所示,訪問(wèn)路徑A在群組I的情況下的執(zhí)行成本為485,在群組2的情況下的執(zhí)行成本為900 ;訪問(wèn)路徑B在群組I的情況下的執(zhí)行成本為1000,在群組2的情況下的執(zhí)行成本為750。這與步驟13中獲得的結(jié)果,訪問(wèn)路徑A更適合于群組I,訪問(wèn)路徑B更適合于群組2,相一致。在一種執(zhí)行方式下,在步驟13從優(yōu)化器引擎獲得每個(gè)群組的備選訪問(wèn)路徑的同時(shí),首先獲得該備選訪問(wèn)路徑針對(duì)對(duì)應(yīng)的群組的執(zhí)行成本。例如,在獲得訪問(wèn)路徑A和B的同時(shí),首先獲得路徑A針對(duì)群組I的執(zhí)行成本和路徑B針對(duì)群組2的執(zhí)行成本。然后,通過(guò)請(qǐng)求從優(yōu)化器引擎獲得每個(gè)備選訪問(wèn)路徑針對(duì)其他群組的執(zhí)行成本,例如路徑A針對(duì)群組2的成本和路徑B針對(duì)群組I的成本。由此,最終獲得每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的執(zhí)行成本。接著,進(jìn)一步考慮各個(gè)群組的出現(xiàn)頻率,以出現(xiàn)頻率為權(quán)重因子對(duì)執(zhí)行成本進(jìn)行加權(quán),由此獲得每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,如圖6B所示。通過(guò)將執(zhí)行成本乘以各個(gè)群組的出現(xiàn)頻率,可以得到如下結(jié)果:訪問(wèn)路徑A在群組I的情況下的加權(quán)執(zhí)行成本為430,在群組2的情況下的加權(quán)執(zhí)行成本為102 ;訪問(wèn)路徑B在群組I的情況下的加權(quán)執(zhí)行成本為886,在群組2的情況下的執(zhí)行成本為85。
然后,基于各個(gè)加權(quán)執(zhí)行成本,計(jì)算每一備選訪問(wèn)路徑在所有群組下的加權(quán)執(zhí)行成本的總和,將加權(quán)執(zhí)行成本總和最小的備選訪問(wèn)路徑確定為最優(yōu)的訪問(wèn)路徑。例如,在圖6B的例子中,可以計(jì)算得到,如果群組I和2均按照訪問(wèn)路徑A執(zhí)行,那么加權(quán)執(zhí)行成本的總和為430+101 = 532 ;如果群組I和2均按照訪問(wèn)路徑B執(zhí)行,那么加權(quán)執(zhí)行成本的總和為886+85 = 971。很明顯,訪問(wèn)路徑A在所有群組下的加權(quán)執(zhí)行成本的總和最小,因此可以將該訪問(wèn)路徑確定為對(duì)所有群組的整體來(lái)說(shuō)更加優(yōu)選的訪問(wèn)路徑。由此,通過(guò)交叉核查,確定出對(duì)于整個(gè)群組的集合來(lái)說(shuō)最優(yōu)的訪問(wèn)路徑。綜合以上,在步驟11-14中,通過(guò)監(jiān)視查詢語(yǔ)句的執(zhí)行歷史獲取多個(gè)執(zhí)行實(shí)例,然后將這些執(zhí)行實(shí)例劃分為多個(gè)群組,基于每個(gè)群組的出現(xiàn)頻率和過(guò)濾因子確定出適合于該查詢語(yǔ)句的訪問(wèn)路徑。由于訪問(wèn)路徑的優(yōu)化是基于查詢語(yǔ)句在過(guò)去一段時(shí)間內(nèi)的執(zhí)行歷史統(tǒng)計(jì),因此,優(yōu)化過(guò)程可以在接下來(lái)的查詢語(yǔ)句執(zhí)行之前靜態(tài)地進(jìn)行,而不需要在運(yùn)行時(shí)重新評(píng)估過(guò)濾因子、重新優(yōu)化路徑。這樣,優(yōu)化過(guò)程不會(huì)增加運(yùn)行時(shí)的開(kāi)銷,不會(huì)占用運(yùn)行時(shí)的資源。并且,由于訪問(wèn)路徑是運(yùn)行時(shí)之前預(yù)先確定的,因此這樣獲得的訪問(wèn)路徑比較穩(wěn)定,可以追溯。在這方面,可以隨著查詢語(yǔ)句的持續(xù)執(zhí)行,間隔預(yù)定周期更新執(zhí)行歷史,也就是,添加新的執(zhí)行實(shí)例或用新的執(zhí)行實(shí)例替換之前的執(zhí)行實(shí)例,從而使得獲得的執(zhí)行實(shí)例更準(zhǔn)確地反映出過(guò)去一段時(shí)間內(nèi)查詢語(yǔ)句的執(zhí)行情況。此外,在以上優(yōu)化方案中,將執(zhí)行實(shí)例劃分為群組進(jìn)行處理。這使得對(duì)執(zhí)行實(shí)例的分析更加簡(jiǎn)單而具有針對(duì)性,進(jìn)而使得優(yōu)化方案的執(zhí)行更加高效。進(jìn)一步地,根據(jù)以上優(yōu)化方案,在確定優(yōu)選訪問(wèn)路徑時(shí),綜合考慮了所有群組的過(guò)濾因子和出現(xiàn)頻率。通過(guò)將出現(xiàn)頻率作為權(quán)重因子,訪問(wèn)路徑的優(yōu)化更加傾向于出現(xiàn)頻率高的群組。另一方面,群組的出現(xiàn)頻率高意味著該群組對(duì)應(yīng)的字面值的使用頻率高,這暗示著,這些字面值在接下來(lái)的查詢執(zhí)行中出現(xiàn)的概率也會(huì)相應(yīng)地比較高。因此,由于考慮了出現(xiàn)頻率,獲得的訪問(wèn)路徑具有更大的可能性能夠適合于接下來(lái)的查詢執(zhí)行。以上通過(guò)步驟11-14獲取了適合于整個(gè)群組集合的單條訪問(wèn)路徑。在進(jìn)一步的實(shí)施方式中,還可以進(jìn)一步判斷采用多條訪問(wèn)路徑的組合的可能性。具體地,在以上的步驟14中,已經(jīng)獲得了每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本。于是,可以將各個(gè)群組在其對(duì)應(yīng)的備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本求和,以此獲得多條訪問(wèn)路徑的加權(quán)執(zhí)行成本。然而,如果采用多條訪問(wèn)路徑的話,在進(jìn)行路徑切換時(shí)會(huì)產(chǎn)生額外的成本。因此,多條路徑方案的總成本可以認(rèn)為是多條訪問(wèn)路徑的加權(quán)執(zhí)行成本加上路徑切換的成本。如果多條路徑方案的總成本低于上述單條訪問(wèn)路徑的總執(zhí)行成本,那么就認(rèn)為多條路徑方案更加優(yōu)選,否則,仍然采用單條訪問(wèn)路徑的方案。例如,參照?qǐng)D6B,訪問(wèn)路徑A在群組I的情況下的加權(quán)執(zhí)行成本為430,訪問(wèn)路徑B在群組2的情況下的執(zhí)行成本為85。因此,如果對(duì)群組I采用訪問(wèn)路徑A,對(duì)群組B采用訪問(wèn)路徑B,也就是采用多條訪問(wèn)路徑的組合,那么該多條訪問(wèn)路徑的加權(quán)執(zhí)行成本為515。假定每次切換路徑的附加成本為50,那么該多條路徑方案的總成本為565。這個(gè)成本要高于對(duì)所有群組均采用訪問(wèn)路徑A時(shí)的總執(zhí)行成本532,因此,在這個(gè)例子里,采用單條路徑的方案仍然是更優(yōu)選的。但是,如果在其他例子里,多條路徑方案的總成本更低,那么采用多條路徑的組合是更加優(yōu)選的。在這種情況下,需要在運(yùn)行時(shí)判斷查詢語(yǔ)句的過(guò)濾因子,以確定將其劃分到哪個(gè)群組中。在以上的例子中,都是結(jié)合用戶信息統(tǒng)計(jì)表Tl中的COUNTRY列和查詢語(yǔ)句SELECT*FROM Tl WHERE COUNTRY = var進(jìn)行描述的。在該查詢語(yǔ)句中,僅包含了一個(gè)過(guò)濾條件“COUNTRY = var”。相應(yīng)地,該查詢語(yǔ)句的每個(gè)執(zhí)行實(shí)例信息僅包含一個(gè)字面值和一個(gè)對(duì)應(yīng)的過(guò)濾因子。然而,在一些情況下,一個(gè)查詢語(yǔ)句可能包含了多個(gè)過(guò)濾條件。對(duì)于多個(gè)過(guò)濾條件的查詢語(yǔ)句,仍然可以類似地執(zhí)行圖1的方法步驟,只是將執(zhí)行實(shí)例中的字面值認(rèn)為是字面值組合,將過(guò)濾因子認(rèn)為是對(duì)應(yīng)的過(guò)濾因子組合。在一個(gè)例子中,利用查詢語(yǔ)句SELECT*FR0M T2WHERE SEX = AND JOB = 針對(duì)員工信息統(tǒng)計(jì)表T2中的SEX列和JOB列進(jìn)行查詢。該查詢語(yǔ)句包含兩個(gè)過(guò)濾條件:SEX = 以及JOB= 。在步驟11,通過(guò)監(jiān)視該查詢語(yǔ)句的執(zhí)行歷史,可以獲得圖7A所示的執(zhí)行實(shí)例信息。具體地,在圖7A的信息表中,每一執(zhí)行實(shí)例信息都包含該執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值集合,例如〈‘M’,’ DESIGNER’ >,< ‘F’,‘SALESREP’ >,以及字面值集合對(duì)應(yīng)的過(guò)濾因子集合,例如〈0.8,0.4>,〈0.2,0.3>等。由于查詢語(yǔ)句包含了兩個(gè)過(guò)濾條件,因此每個(gè)字面值集合和過(guò)濾因子集合都包含2個(gè)元素。接著,在步驟12,基于過(guò)濾因子集合將圖7A的執(zhí)行實(shí)例劃分為群組。如前所述,劃分群組的方式有很多。對(duì) 于包含2個(gè)元素的過(guò)濾因子集合來(lái)說(shuō),可以定義一個(gè)二維距離,計(jì)算過(guò)濾因子集合的二維距離,基于該距離進(jìn)行群組的劃分。在形成群組的基礎(chǔ)上,可以類似地獲得每個(gè)群組的出現(xiàn)頻率和平均過(guò)濾因子集合。平均過(guò)濾因子集合也可以采用算術(shù)平均或加權(quán)平均等多種方式來(lái)獲得。假定在一個(gè)例子中,根據(jù)某種分組方式將圖7A的執(zhí)行實(shí)例形成為圖7B所示的群組1-3,并獲得了每個(gè)群組的出現(xiàn)頻率和平均過(guò)濾因子集合。接下來(lái),基于每個(gè)群組的平均過(guò)濾因子集合獲得備選訪問(wèn)路徑,即步驟13。在此假定,圖7B所示的群組1-3分別獲得了備選訪問(wèn)路徑A,B, C。然后,在步驟14,對(duì)每個(gè)群組和每個(gè)備選訪問(wèn)路徑進(jìn)行交叉核查,確定出適合所有群組的訪問(wèn)路徑。在圖7B的例子中,存在三個(gè)群組1-3和三個(gè)備選訪問(wèn)路徑A,B,C,因此,在圖7C中以矩陣形式更清楚地示出交叉核查的結(jié)果。通過(guò)計(jì)算各個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,可以獲知,路徑B的總執(zhí)行成本最小,可以確定為優(yōu)選訪問(wèn)路徑。這一步驟的執(zhí)行與單個(gè)過(guò)濾條件的查詢語(yǔ)句的例子完全相同。通過(guò)以上包含兩個(gè)過(guò)濾條件的查詢語(yǔ)句的例子,本領(lǐng)域技術(shù)人員可以容易地將過(guò)濾條件的數(shù)目類似地?cái)U(kuò)展到三個(gè)、四個(gè)甚至更多,使得本發(fā)明實(shí)施例的優(yōu)化方案適合于各種查詢語(yǔ)句的情形。以上結(jié)合具體例子描述了優(yōu)化訪問(wèn)路徑的方法?;谕话l(fā)明構(gòu)思,本發(fā)明的實(shí)施例還提供了優(yōu)化訪問(wèn)路徑的裝置。圖8示出根據(jù)本發(fā)明一個(gè)實(shí)施例的優(yōu)化訪問(wèn)路徑的裝置的框圖,更具體地,該裝置用于對(duì)多次重復(fù)執(zhí)行的查詢語(yǔ)句在數(shù)據(jù)庫(kù)中的訪問(wèn)路徑進(jìn)行優(yōu)化。如圖所示,該優(yōu)化裝置80包括實(shí)例信息獲取單元81,配置為通過(guò)對(duì)查詢語(yǔ)句的執(zhí)行情況進(jìn)行監(jiān)視和采樣,獲取多個(gè)執(zhí)行實(shí)例的信息,每一執(zhí)行實(shí)例的信息包括該執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值以及該字面值對(duì)應(yīng)的過(guò)濾因子;分組單元82,配置為基于所述字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率;備選路徑獲取單元83,配置為獲取針對(duì)每個(gè)群組的平均過(guò)濾因子而創(chuàng)建的備選訪問(wèn)路徑;以及優(yōu)選路徑確定單元84,配置為,以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本的總和最小的備選訪問(wèn)路徑確定為優(yōu)選訪問(wèn)路徑。
在一個(gè)實(shí)施例中,上述分組單元82包含進(jìn)一步的子單元或模塊來(lái)實(shí)現(xiàn)執(zhí)行實(shí)例的分組(未示出)。具體地,在一個(gè)例子中,分組單元82可以包含分類模塊,配置為基于字面值將獲得的多個(gè)執(zhí)行實(shí)例劃分多個(gè)類,獲取每個(gè)類的過(guò)濾因子和出現(xiàn)頻率;以及合并模塊,配置為基于每個(gè)類中的過(guò)濾因子將所述多個(gè)類合并為多個(gè)群組,基于每個(gè)類的過(guò)濾因子和出現(xiàn)頻率獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率。在一個(gè)實(shí)施例中,圖8的優(yōu)化裝置80還包括多路徑判斷單元(未示出),配置為獲取多條備選訪問(wèn)路徑的組合的總執(zhí)行成本,將該總執(zhí)行成本與優(yōu)選路徑確定單元84確定的單條優(yōu)選訪問(wèn)路徑的總執(zhí)行成本進(jìn)行比較,以確定最優(yōu)的訪問(wèn)路徑。對(duì)于以上各個(gè)單元或模塊的具體執(zhí)行方式,可以參照之前結(jié)合方法流程和具體例子進(jìn)行的詳細(xì)描述,在此不再贅述??梢岳斫?,上述路徑優(yōu)化的裝置80可以嵌入或附加到現(xiàn)有的數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)化器中作為功能的擴(kuò)展。此時(shí),備選路徑獲取單元83和優(yōu)選路徑確定單元84可以在優(yōu)化器內(nèi)部直接從優(yōu)化引擎獲取備選訪問(wèn)路徑及相應(yīng)的成本。在另一種實(shí)施方式中,裝置80可以作為一個(gè)獨(dú)立的工具設(shè)置在現(xiàn)有優(yōu)化器的外圍,例如設(shè)置在客戶端上。此時(shí),裝置80可以通過(guò)各種有線或無(wú)線的方式,利用各種通信協(xié)議,與優(yōu)化器通信,由此將例如過(guò)濾因子的數(shù)據(jù)發(fā)送給優(yōu)化器,并從優(yōu)化器獲得需要的數(shù)據(jù),例如備選訪問(wèn)路徑及相應(yīng)的成本等。在另一種實(shí)施方式中,裝置80的各個(gè)單元可以以分布式的形式實(shí)現(xiàn)。以上所述的優(yōu)化數(shù)據(jù)庫(kù)中的訪問(wèn)路徑的方法和裝置可以利用計(jì)算系統(tǒng)來(lái)實(shí)現(xiàn)。圖9示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)100的框圖。如所示,計(jì)算機(jī)系統(tǒng)100可以包括:CPU(中央處理單元)101、RAM(隨機(jī)存取存儲(chǔ)器)102、R0M(只讀存儲(chǔ)器)103、系統(tǒng)總線104、硬盤(pán)控制器105、鍵盤(pán)控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤(pán)110、鍵盤(pán)111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。在這些設(shè)備中,與系統(tǒng)總線104耦合的有CPU IOU RAM 102、ROM 103、硬盤(pán)控制器105、鍵盤(pán)控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤(pán)110與硬盤(pán)控制器105耦合,鍵盤(pán)111與鍵盤(pán)控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖10所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。雖然以上結(jié)合具體實(shí)施例,對(duì)本發(fā)明的方法、系統(tǒng)以及各個(gè)單元進(jìn)行了詳細(xì)描述,但本發(fā)明并不限于此。本領(lǐng)域普通技術(shù)人員能夠在說(shuō)明書(shū)教導(dǎo)之下對(duì)本發(fā)明進(jìn)行多種變換、替換和修改而不偏離本發(fā)明的精神和范圍。應(yīng)該理解,所有這樣的變化、替換、修改仍然落入本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明的保護(hù)范圍由所附權(quán)利要求來(lái)限定。
權(quán)利要求
1.一種優(yōu)化數(shù)據(jù)庫(kù)中訪問(wèn)路徑的方法,包括: 對(duì)查詢語(yǔ)句的執(zhí)行情況進(jìn)行采樣,獲取多個(gè)執(zhí)行實(shí)例的信息,每一執(zhí)行實(shí)例的信息包括該執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值以及該字面值對(duì)應(yīng)的過(guò)濾因子; 基于所述字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和該群組的出現(xiàn)頻率; 獲取針對(duì)每個(gè)群組的平均過(guò)濾因子而創(chuàng)建的備選訪問(wèn)路徑; 以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本總和最小的備選訪問(wèn)路徑確定為優(yōu)選訪問(wèn)路徑。
2.根據(jù)權(quán)利要求1的方法,其中所述獲取多個(gè)執(zhí)行實(shí)例的信息包括,獲取每一執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值,并通過(guò)以下方式中的至少一個(gè)獲取所述字面值對(duì)應(yīng)的過(guò)濾因子: 參照查詢語(yǔ)句針對(duì)的表格的統(tǒng)計(jì)信息,根據(jù)所述統(tǒng)計(jì)信息獲取過(guò)濾因子;以及 針對(duì)查詢語(yǔ)句執(zhí)行count語(yǔ)句,根據(jù)count語(yǔ)句的執(zhí)行結(jié)果計(jì)算過(guò)濾因子。
3.根據(jù)權(quán)利要求1的方法,其中所述基于字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和該群組的出現(xiàn)頻率包括: 基于字面值將獲得的多個(gè)執(zhí)行實(shí)例劃分多個(gè)類,獲取每個(gè)類的過(guò)濾因子和出現(xiàn)頻率;以及 基于每個(gè)類中的過(guò)濾因子將所述多個(gè)類合并為多個(gè)群組,基于每個(gè)類的過(guò)濾因子和出現(xiàn)頻率獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率。
4.根據(jù)權(quán)利要求3的方法,其中所述基于字面值將獲得的多個(gè)執(zhí)行實(shí)例劃分多個(gè)類,獲取每個(gè)類的過(guò)濾因子和出現(xiàn)頻率包括: 將字面值相同的執(zhí)行實(shí)例歸為一個(gè)類,將該相同字面值對(duì)應(yīng)的過(guò)濾因子作為該類的過(guò)濾因子,并獲取該字面值的使用頻率作為該類的出現(xiàn)頻率。
5.根據(jù)權(quán)利要求3的方法,其中基于每個(gè)類中的過(guò)濾因子將所述多個(gè)類合并為多個(gè)群組包括以下之一: 將過(guò)濾因子之間的距離在預(yù)定閾值之內(nèi)的類合并為一個(gè)群組;以及 將過(guò)濾因子的值劃分為多個(gè)區(qū)間,將過(guò)濾因子屬于同一區(qū)間的類合并為一個(gè)群組。
6.根據(jù)權(quán)利要求3的方法,其中所述基于每個(gè)類的過(guò)濾因子和出現(xiàn)頻率獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率包括: 計(jì)算各個(gè)類的出現(xiàn)頻率的和作為群組的出現(xiàn)頻率; 通過(guò)以下方式之一計(jì)算群組的平均過(guò)濾因子: 計(jì)算各個(gè)類的過(guò)濾因子的算術(shù)平均作為群組的平均過(guò)濾因子; 以群組中各個(gè)類的相對(duì)出現(xiàn)頻率為權(quán)重,計(jì)算各個(gè)類的過(guò)濾因子的加權(quán)平均作為群組的平均過(guò)濾因子。
7.根據(jù)權(quán)利要求1的方法,其中所述基于所述字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和該群組的出現(xiàn)頻率包括: 在掃描所述每一執(zhí)行實(shí)例時(shí),基于字面值對(duì)應(yīng)的過(guò)濾因子直接判斷該執(zhí)行實(shí)例的分組; 在將所述執(zhí)行實(shí)例放入對(duì)應(yīng)群組時(shí),對(duì)每個(gè)群組中執(zhí)行實(shí)例的數(shù)目進(jìn)行計(jì)數(shù),并對(duì)過(guò)濾因子進(jìn)行累加; 基于每個(gè)群組中執(zhí)行實(shí)例的計(jì)數(shù)獲取該群組的出現(xiàn)頻率,基于過(guò)濾因子的累加獲取該群組的平均過(guò)濾因子。
8.根據(jù)權(quán)利要求1的方法,其中所述計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本包括: 獲取每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的執(zhí)行成本;以及 以對(duì)應(yīng)群組的出現(xiàn)頻率為權(quán)重因子乘以所述執(zhí)行成本,由此獲得每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本。
9.根據(jù)權(quán)利要求1的方法,還包括:獲取多條備選訪問(wèn)路徑的組合的總執(zhí)行成本,將該總執(zhí)行成本與所述優(yōu)選訪問(wèn)路徑的總執(zhí)行成本進(jìn)行比較,以確定最優(yōu)的訪問(wèn)路徑。
10.根據(jù)權(quán)利要求1的方法,其中所述查詢語(yǔ)句包含多個(gè)過(guò)濾條件,所述字面值包含字面值集合,所述過(guò)濾因子包含過(guò)濾因子集合。
11.一種優(yōu)化數(shù)據(jù)庫(kù)中訪問(wèn)路徑的裝置,包括: 實(shí)例信息獲取單元,配置為對(duì)查詢 語(yǔ)句的執(zhí)行情況進(jìn)行采樣,獲取多個(gè)執(zhí)行實(shí)例的信息,每一執(zhí)行實(shí)例的信息包括該執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值以及該字面值對(duì)應(yīng)的過(guò)濾因子; 分組單元,配置為基于所述字面值對(duì)應(yīng)的過(guò)濾因子將所述多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和該群組的出現(xiàn)頻率; 備選路徑獲取單元,配置為獲取針對(duì)每個(gè)群組的平均過(guò)濾因子而創(chuàng)建的備選訪問(wèn)路徑; 優(yōu)選路徑確定單元,配置為以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本總和最小的備選訪問(wèn)路徑確定為優(yōu)選訪問(wèn)路徑。
12.根據(jù)權(quán)利要求11的裝置,其中所述實(shí)例信息獲取單元配置為,獲取每一執(zhí)行實(shí)例下查詢語(yǔ)句中的字面值,并通過(guò)以下方式中的至少一個(gè)獲取所述字面值對(duì)應(yīng)的過(guò)濾因子: 參照查詢語(yǔ)句針對(duì)的表格的統(tǒng)計(jì)信息,根據(jù)所述統(tǒng)計(jì)信息獲取過(guò)濾因子;以及 針對(duì)查詢語(yǔ)句執(zhí)行count語(yǔ)句,根據(jù)count語(yǔ)句的執(zhí)行結(jié)果計(jì)算過(guò)濾因子。
13.根據(jù)權(quán)利要求11的裝置,其中所述分組單元包括: 分類模塊,配置為基于字面值將獲得的多個(gè)執(zhí)行實(shí)例劃分多個(gè)類,獲取每個(gè)類的過(guò)濾因子和出現(xiàn)頻率;以及 合并模塊,配置為基于每個(gè)類中的過(guò)濾因子將所述多個(gè)類合并為多個(gè)群組,基于每個(gè)類的過(guò)濾因子和出現(xiàn)頻率獲取每個(gè)群組的平均過(guò)濾因子和出現(xiàn)頻率。
14.根據(jù)權(quán)利要求13的裝置,其中所述分類模塊配置為: 將字面值相同的執(zhí)行實(shí)例歸為一個(gè)類,將該相同字面值對(duì)應(yīng)的過(guò)濾因子作為該類的過(guò)濾因子,并獲取該字面值的使用頻率作為該類的出現(xiàn)頻率。
15.根據(jù)權(quán)利要求13的裝置,其中所述合并模塊配置為執(zhí)行以下之一: 將過(guò)濾因子之間的距離在預(yù)定閾值之內(nèi)的類合并為一個(gè)群組;以及 將過(guò)濾因子的值劃分為多個(gè)區(qū)間,將過(guò)濾因子屬于同一區(qū)間的類合并為一個(gè)群組。
16.根據(jù)權(quán)利要求13的裝置,其中所述合并模塊配置為:計(jì)算各個(gè)類的出現(xiàn)頻率的和作為群組的出現(xiàn)頻率; 通過(guò)以下方式之一計(jì)算群組的平均過(guò)濾因子: 計(jì)算各個(gè)類的過(guò)濾因子的算術(shù)平均作為群組的平均過(guò)濾因子; 以群組中各個(gè)類的相對(duì)出現(xiàn)頻率為權(quán)重,計(jì)算各個(gè)類的過(guò)濾因子的加權(quán)平均作為群組的平均過(guò)濾因子。
17.根據(jù)權(quán)利要求1 1的裝置,其中所述分組單元配置為: 在掃描所述每一執(zhí)行實(shí)例時(shí),基于字面值對(duì)應(yīng)的過(guò)濾因子直接判斷該執(zhí)行實(shí)例的分組; 在將所述執(zhí)行實(shí)例放入對(duì)應(yīng)群組時(shí),對(duì)每個(gè)群組中執(zhí)行實(shí)例的數(shù)目進(jìn)行計(jì)數(shù),并對(duì)過(guò)濾因子進(jìn)行累加; 基于每個(gè)群組中執(zhí)行實(shí)例的計(jì)數(shù)獲取該群組的出現(xiàn)頻率,基于過(guò)濾因子的累加獲取該群組的平均過(guò)濾因子。
18.根據(jù)權(quán)利要求11的裝置,其中所述優(yōu)選路徑確定單元配置為: 獲取每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的執(zhí)行成本;以及 以對(duì)應(yīng)群組的出現(xiàn)頻率為權(quán)重因子乘以所述執(zhí)行成本,由此獲得每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本。
19.根據(jù)權(quán)利要求11的裝置,還包括:多路徑判斷單元,配置為獲取多條備選訪問(wèn)路徑的組合的總執(zhí)行成本,將該總執(zhí)行成本與所述優(yōu)選訪問(wèn)路徑的總執(zhí)行成本進(jìn)行比較,以確定最優(yōu)的訪問(wèn)路徑。
20.根據(jù)權(quán)利要求11的裝置,其中所述查詢語(yǔ)句包含多個(gè)過(guò)濾條件,所述字面值包含字面值集合,所述過(guò)濾因子包含過(guò)濾因子集合。
全文摘要
提供了一種優(yōu)化訪問(wèn)路徑的方法和裝置,所述方法包括對(duì)查詢語(yǔ)句的執(zhí)行情況進(jìn)行采樣,獲取多個(gè)執(zhí)行實(shí)例的信息,每一執(zhí)行實(shí)例的信息包括查詢語(yǔ)句中的字面值以及字面值對(duì)應(yīng)的過(guò)濾因子;基于過(guò)濾因子將多個(gè)執(zhí)行實(shí)例分為多個(gè)群組,獲取每個(gè)群組的平均過(guò)濾因子和群組的出現(xiàn)頻率;獲取針對(duì)每個(gè)群組的平均過(guò)濾因子而創(chuàng)建的備選訪問(wèn)路徑;以出現(xiàn)頻率為權(quán)重,計(jì)算每個(gè)群組在每個(gè)備選訪問(wèn)路徑下的加權(quán)執(zhí)行成本,將各個(gè)群組的加權(quán)執(zhí)行成本總和最小的備選訪問(wèn)路徑確定為優(yōu)選訪問(wèn)路徑。優(yōu)化裝置與上述方法對(duì)應(yīng)。通過(guò)以上方法和裝置,能夠基于查詢語(yǔ)句的執(zhí)行歷史確定出優(yōu)選的訪問(wèn)路徑,使其適合于接下來(lái)的執(zhí)行情況,從而提高路徑優(yōu)化的效果。
文檔編號(hào)G06F17/30GK103176974SQ20111043026
公開(kāi)日2013年6月26日 申請(qǐng)日期2011年12月20日 優(yōu)先權(quán)日2011年12月20日
發(fā)明者P·D·博斯曼, 周婧, 傅毓勤, 周祥, 魏可偉 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司