用于數(shù)據(jù)庫(kù)索引的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫(kù),具體的,本發(fā)明涉及用于數(shù)據(jù)庫(kù)索引的方法和系統(tǒng)。
【背景技術(shù)】
[0002] 為了提高數(shù)據(jù)庫(kù)查詢的性能,現(xiàn)有技術(shù)中在數(shù)據(jù)庫(kù)的索引中引入了非鍵列(index include)。通常情況下,由數(shù)據(jù)庫(kù)管理員指定需要在數(shù)據(jù)庫(kù)的索引中引入的非鍵列。由于 數(shù)據(jù)庫(kù)管理員并不知道隨后的數(shù)據(jù)庫(kù)操作的實(shí)際情況,因而這種由數(shù)據(jù)庫(kù)管理員指定需要 在數(shù)據(jù)庫(kù)的索引中引入的非鍵列的做法往往不能達(dá)到其初衷,更有甚者,反而使得數(shù)據(jù)庫(kù) 查詢的性能下降。
【發(fā)明內(nèi)容】
[0003] 針對(duì)現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提出了一種用于數(shù)據(jù)庫(kù)索引的方法和系 統(tǒng),使得引入的非鍵列能夠顯著提高數(shù)據(jù)庫(kù)的查詢性能。
[0004] 根據(jù)本發(fā)明的說(shuō)明性實(shí)施例,提供了一種用于數(shù)據(jù)庫(kù)索引的方法,所述數(shù)據(jù)庫(kù)索 引包括至少一個(gè)非鍵列,所述方法包括:分別獲取一定時(shí)間內(nèi)多個(gè)結(jié)構(gòu)化查詢語(yǔ)句的每一 個(gè)的執(zhí)行次數(shù),其中所述多個(gè)結(jié)構(gòu)化查詢語(yǔ)句利用所述數(shù)據(jù)庫(kù)索引;針對(duì)所述至少一個(gè)非 鍵列的每一個(gè):根據(jù)所述多個(gè)結(jié)構(gòu)化查詢語(yǔ)句的每一個(gè)的執(zhí)行次數(shù)計(jì)算該非鍵列的命中次 數(shù);獲取該非鍵列的長(zhǎng)度;利用該非鍵列的命中次數(shù)和長(zhǎng)度計(jì)算該非鍵列的命中密度,其 中:命中密度=命中次數(shù)/長(zhǎng)度。
[0005] 根據(jù)本發(fā)明的說(shuō)明性實(shí)施例,提供了一種用于數(shù)據(jù)庫(kù)索引的系統(tǒng),所述數(shù)據(jù)庫(kù)索 引包括至少一個(gè)非鍵列,所述系統(tǒng)包括:執(zhí)行次數(shù)獲取單元,配置為分別獲取一定時(shí)間內(nèi)多 個(gè)結(jié)構(gòu)化查詢語(yǔ)句的每一個(gè)的執(zhí)行次數(shù),其中所述多個(gè)結(jié)構(gòu)化查詢語(yǔ)句利用所述數(shù)據(jù)庫(kù)索 弓丨;命中密度計(jì)算單元,配置為針對(duì)所述至少一個(gè)非鍵列的每一個(gè):根據(jù)所述多個(gè)結(jié)構(gòu)化 查詢語(yǔ)句的每一個(gè)的執(zhí)行次數(shù)計(jì)算該非鍵列的命中次數(shù);獲取該非鍵列的長(zhǎng)度;利用該非 鍵列的命中次數(shù)和長(zhǎng)度計(jì)算該非鍵列的命中密度,其中:命中密度=命中次數(shù)/長(zhǎng)度。
[0006] 利用說(shuō)明性實(shí)施例的方法和系統(tǒng),通過(guò)計(jì)算每一個(gè)非鍵列的命中密度,使得引入 的非鍵列能夠顯著提高數(shù)據(jù)庫(kù)的查詢性能,從而能夠優(yōu)化數(shù)據(jù)庫(kù)索引。
【附圖說(shuō)明】
[0007] 通過(guò)結(jié)合附圖對(duì)本公開示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其 它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號(hào) 通常代表相同部件。
[0008] 圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框 圖;
[0009] 圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于數(shù)據(jù)庫(kù)索引的方法200的流程圖;
[0010] 圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于數(shù)據(jù)庫(kù)索引的系統(tǒng)300的框圖;
[0011] 圖4示出了包含非鍵列的數(shù)據(jù)庫(kù)索引的示意圖400。
【具體實(shí)施方式】
[0012] 下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開 的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方 式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的 范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0013] 圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框 圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使 用范圍帶來(lái)任何限制。
[0014] 如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng) /服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器 28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
[0015] 總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器, 外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉 例來(lái)說(shuō),這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC) 總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
[0016] 計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是 任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng) 的和不可移動(dòng)的介質(zhì)。
[0017] 系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存 取存儲(chǔ)器(RAM) 30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其 它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34 可以用于讀寫不可移動(dòng)的、非易失性磁介質(zhì)(圖1未顯示,通常稱為"硬盤驅(qū)動(dòng)器")。盡管 圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(例如"軟盤")讀寫的磁盤驅(qū)動(dòng)器, 以及對(duì)可移動(dòng)非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。 在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28 可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模 塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
[0018] 具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器 28中,這樣的程序模塊42包括--但不限于--操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它 程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程 序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
[0019] 計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14(例如鍵盤、指向設(shè)備、 顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的 設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信 的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過(guò)輸入/輸出(I/O)接 口 22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過(guò)網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò) (例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適 配器20通過(guò)總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示 出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代 碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存 儲(chǔ)系統(tǒng)等。
[0020] 除了圖1顯示傳統(tǒng)的計(jì)算機(jī)系統(tǒng)/服務(wù)器12,適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式還可 以包括移動(dòng)電子設(shè)備,包括但不限于移動(dòng)電話、PDA、平板電腦等。典型的,移動(dòng)電子設(shè)備具 有輸入設(shè)備包括但不限于接觸式輸入設(shè)備,如觸摸屏、觸摸板等。
[0021] 下面參考圖2,其中顯示了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于數(shù)據(jù)庫(kù)索引的方法200 的流程圖。根據(jù)本發(fā)明一個(gè)實(shí)施例,數(shù)據(jù)庫(kù)索引包括至少一個(gè)非鍵列。方法200從步驟202 開始。
[0022] 接下來(lái),方法200進(jìn)入步驟204,其中分別獲取一定時(shí)間內(nèi)多個(gè)結(jié)構(gòu)化查詢語(yǔ)句的 每一個(gè)的執(zhí)行次數(shù),其中所述多個(gè)結(jié)構(gòu)化查詢語(yǔ)句利用所述數(shù)據(jù)庫(kù)索引。
[0023] 接下來(lái),方法200進(jìn)入步驟206,其中針對(duì)所述至少一個(gè)非鍵列的每一個(gè)執(zhí)行步驟 208至步驟210,其中:
[0024] 在步驟208,根據(jù)多個(gè)結(jié)構(gòu)化查詢語(yǔ)句的每一個(gè)的執(zhí)行次數(shù)計(jì)算該非鍵列的命中 次數(shù);
[0025] 在步驟210,獲取該非鍵列的長(zhǎng)度;
[0026] 在步驟212,利用該非鍵列的命中次數(shù)和長(zhǎng)度計(jì)算該非鍵列的命中密度,其中:
[0027] 命中密度=命中次數(shù)/長(zhǎng)度。
[0028] 接下來(lái),在至少一個(gè)非鍵列的每一個(gè)的命中密度計(jì)算完畢之后,方法200進(jìn)入步 驟214,結(jié)束。
[0029] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,方法200進(jìn)一步包括,根據(jù)預(yù)定的標(biāo)準(zhǔn)保留非鍵列。
[0030] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,其中根據(jù)預(yù)定的標(biāo)準(zhǔn)保留非鍵列包括:保留命中密度 大于預(yù)定閾值的非鍵列。
[0031] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,其中根據(jù)預(yù)定的標(biāo)準(zhǔn)保留非鍵列包括:根據(jù)命中密度 降序排列至少一個(gè)非鍵列,以及保留命中密度靠前的預(yù)定數(shù)量的非鍵列。
[0032] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,其中根據(jù)預(yù)定的標(biāo)準(zhǔn)保留非鍵列包括:根據(jù)命中密度 升序排列至少一個(gè)非鍵列,以及保留命中密度靠后的預(yù)定數(shù)量的非鍵列。
[0033] 根據(jù)本