用於評估資料庫索引的效率的方法和裝置製造方法
2023-05-22 05:09:26 3
用於評估資料庫索引的效率的方法和裝置製造方法
【專利摘要】本發明的各實施方式提供了用於評估資料庫索引的效率的方法和裝置。在一個實施方式中,提供了一種用於評估資料庫索引的效率的方法,包括:接收對資料庫進行訪問的批處理任務的序列;估算指示在基於資料庫索引執行序列中的批處理任務期間訪問資料庫的次數的指示符;以及基於指示符來評估資料庫索引對於序列的效率,其中序列中的批處理任務是針對資料庫執行相同類型的操作的任務。在一個實施方式中,提供了一種用於在資料庫中執行序列中的批處理任務的方法,包括:針對多個資料庫索引來分別執行用於評估資料庫索引的效率的方法,以計算多個資料庫索引中的每個資料庫索引的效率;以及選擇效率最高的資料庫索引來執行序列中的批處理任務。
【專利說明】用於評估資料庫索引的效率的方法和裝置
【技術領域】
[0001] 本發明的各實施方式涉及資料庫管理,更具體地,涉及用於評估資料庫索引的效 率的方法和裝置。
【背景技術】
[0002] 隨著計算機硬體技術以及資料庫技術的發展,在提供越來越大的數據存儲能力的 同時,資料庫對於外界訪問的響應效率也越來越高。例如,通過使用資料庫索引技術,可以 在一定程度上提高對資料庫的訪問效率。資料庫索引是對資料庫的表中一個或多個列的值 進行排序的數據結構。可以建立一個或者多個索引,通過使用索引來訪問資料庫時,不必在 數據表中搜索全部的數據行因而有助於提高查詢效率。
[0003] 另一方面,隨著應用程式複雜性的提高,目前的應用程式越來越多地涉及到對於 資料庫的各種訪問操作,並且這些訪問操作越來越頻繁。例如,對於銀行的資料庫系統而 言,可能會頻繁地執行批處理任務(batch task),可能會在較短時間內執行成千上萬次的 數據查詢任務。對於單獨的查詢任務而言,基於多個索引中的哪個索引來進行查詢可能並 不會顯著影響查詢效率;然而,當執行包括數萬個甚至更多個查詢的批處理任務的序列時, 在每次查詢期間累積的響應延遲則可能會影響批處理任務的整體效率,因而期望能夠評價 索引的效率。
[0004] 儘管目前已經提出了基於索引與資料庫中的表的關係來評價索引效率的技術方 案,然而,該技術方案並不能評價該索引在執行批處理任務方面的效率。因而,如何基於當 前批處理任務序列中的各個任務來評價已經創建的多個索引的效率,以及如何進一步選擇 最為適合於當前批處理任務序列的索引,成為亟待解決的問題。
【發明內容】
[0005]因而,期望開發一種能夠基於估算批處理任務序列中的任務訪問資料庫期間的時 間開銷,來評估資料庫索引的效率的技術方案。進一步,還期望可以評估已經創建的多個索 引的效率並從該多個索引中選擇效率最高的索引,以基於該索引來執行各個批處理任務序 列。為此,本發明的各個實施方式提供用於評估資料庫索引的效率的方法和裝置。
[0006]根據本發明的一個方面,提供了一種用於評估資料庫索引的效率的方法,包括:接 收對資料庫進行訪問的批處理任務的序列;估算指示在基於資料庫索引執行序列中的批處 理任務期間訪問資料庫的次數的指示符;以及基於指示符來評估資料庫索引對於序列的效 率,其中序列中的批處理任務是針對資料庫執行相同類型的操作的任務。
[0007]根據本發明的一個方面,估算指示在基於資料庫索引執行序列中的批處理任務期 間訪問資料庫的次數的指示符包括:針對序列中的當前批處理任務,分別計算當前批處理 任務的輸入數據與當前批處理任務之前的至少一個批處理任務的輸入數據在資料庫索引 中的至少一個距離;以及基於至少一個距離來計算指示符。
[0008]根據本發明的一個方面,基於至少一個距離來計算指示符包括:針對至少一個距 離中的每個當前距離,響應於當前距離大於或者等於數據緩存的大小而將指示符增加一增 旦 裡〇
[0009]根據本發明的一個方面,提供了 一種用於在資料庫中執行序列中的批處理任務的 方法,包括:針對多個資料庫索引來分別執行根據上文所述的用於評估資料庫索引的效率 的方法,以計算多個資料庫索引中的每個資料庫索引的效率;以及選擇效率最高的資料庫 索引來執行序列中的批處理任務。
[0010] 根據本發明的一個方面,提供了一種用於評估資料庫索引的效率的裝置,包括:接 ^模塊,配置用於接收對資料庫進行訪問的批處理任務的序列;估算模塊,配置用於估算指 示在基於資料庫索引執行序列中的批處理任務期間訪問資料庫的次數的指示符;以及評估 模塊,配置用於基於指示符來評估資料庫索引對於序列的效率,其中序列中的批處理任務 是針對資料庫執行相同類型的操作的任務。
[0011]根據本發明的一個方面,估算模塊包括:距離計算模塊,配置用於針對序列中的當 前批處理任務,分別計算當前批處理任務的輸入數據與當前批處理任務之前的至少一個批 處理任務的輸入數據在資料庫索引中的至少一個距離;以及指示符計算模塊,配置用於基 於至少一個距離來計算指示符。
[0012]根據本發明的一個方面,指示符計算模塊包括:增加模塊,配置用於針對至少一個 距離中的每個當前距離,響應於當前距離大於或者等於數據緩存的大小而將指示符增加一 增量。
[0013]根據本發明的一個方面,提供了一種用於在資料庫中執行序列中的批處理任務的 裝置,包括:根據上文所述的用於評估資料庫索引的效率的裝置,以計算所述多個資料庫索 引中的每個資料庫索引的效率;以及選擇模塊,配置用於選擇效率最高的資料庫索引來執 行序列中的批處理任務。
[0014]採用本發明所述的方法和裝置,對於資料庫索引在執行批處理任務的效率方面給 出了一種評估標準,該標準可以用于衡量資料庫索引在執行不同的批處理任務時的效率的 高低,進而在資料庫索引與批處理任務的匹配程度方面給出了一個全新的度量標準。另外, 可以在執行批處理任務之前預先評估各個資料庫索引的效率,進而選擇最為適合於當前批 處理任務的資料庫索引,以便提高執行批處理任務的效率。
【專利附圖】
【附圖說明】
[0015]通過結合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其 他目的、特徵和優勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號 通常代表相同部件。
[0016]圖1示意性示出了適於用來實現本發明實施方式的示例性計算機系統/伺服器12 的框圖;
[0017]圖2示意性示出了資料庫表中的數據記錄的示意圖;
[0018]圖3A和圖3B分別示意性示出了基於資料庫索引來執行單一任務和執行批處理任 務的序列時的操作的示意圖;
[0019]圖4不意性不出了根據本發明一個實施方式的用於評估資料庫索引的效率的方 法的流程圖; 5不雜7^出了観本發明-個實施方式的估餘-麵赫引的效率的過 程的不意圖; 6 $意性示出了根據本發明-個實施方式的估算第二資料庫索引的效率的過 程的不意圖;以及 圖7減性示出了根據本發明-個實施方式的用於評估資料庫索引的效率的裝 置的框圖。
【具體實施方式】
[0023] Α下面將參照附圖更詳細地描述本公開的優選實施方式。雖然關中顯示了本公開 的優選實施方式,然而應該理解,可以以各種形式實現本公開而不應被這裡闡述的實施方 式所限制。概,提艦些實施方式是為了使本公開更加透獅完整,並且秘將本公開的 範圍完整地傳達給本領域的技術人員。
[0024]所屬【技術領域】的技術人員知道,本發明可以實現為系統、方法或電腦程式產品。 因此,本公開可以具體實現為以下形式,g卩:可以是完全的硬體、也可以是完全的軟體(包 括,固件:駐留軟體、微代碼等),還可以是硬體和軟體結合的形式,本文-般稱為"電路"、"模 塊"或"系統"。此外,在一些實施方式中,本發明還可以實現為在一個或多個計算機可讀介 質中的電腦程式產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。
[0025]可以採用一個或多個計算機可讀的介質的任意組合。計算機可讀介質可以是計 算機可g信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是--但不限 於--電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算 機可讀存儲介質的更具體的例子(非窮舉的序列)包括:具有一個或多個導線的電連接、便 攜式計算機磁碟、硬碟、隨機存取存儲器(RAM)、只讀存儲器 (R〇M)、可擦式可編程只讀存儲 器(EPROM或快閃記憶體)、光纖、可攜式緊湊磁碟只讀存儲器(CD- R〇M)、光存儲器件、磁存儲器件、 或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程 序的有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。
[0026]計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播的數據信號, 其中承載了計算機可讀的程序代碼。這種傳播的數據信號可以採用多種形式,包括一但 不限於-電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是 計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發送、傳播或者 傳輸用於由指令執行系統、裝置或者器件使用或者與其結合使用的程序。
[0027]計算機可讀介質上包含的程序代碼可以用任何適當的介質傳輸,包括--但不限 於--無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0028]可以以一種或多種程序設計語言或其組合來編寫用於執行本發明操作的計算機 程序代碼,所述程序設計語言包括面向對象的程序設計語言-諸如Java、Smalltalk、C++, 還包括常規的過程式程序設計語言-諸如"C"語言或類似的程序設計語言。程序代碼可以 完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟體包執行、部 分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或伺服器上執行。在 涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡--包括區域網(LAN)或 廣域網(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如利用網際網路服務提 供者來通過網際網路連接)。
[0029] 下面將參照本發明實施方式的方法、裝置(系統)和電腦程式產品的流程圖和 /或框圖描述本發明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中 各方框的組合,都可以由電腦程式指令實現。這些電腦程式指令可以提供給通用計算 機、專用計算機或其他可編程數據處理裝置的處理器,從而生產出一種機器,這些計算機程 序指令通過計算機或其他可編程數據處理裝置執行,產生了實現流程圖和/或框圖中的方 框中規定的功能/操作的裝置。
[0030] 也可以把這些電腦程式指令存儲在能使得計算機或其他可編程數據處理裝置 以特定方式工作的計算機可讀介質中,這樣,存儲在計算機可讀介質中的指令就產生出一 個包括實現流程圖和/或框圖中的方框中規定的功能/操作的指令裝置(instruction means)的製造品(manufacture)。
[0031] 也可以把電腦程式指令加載到計算機、其他可編程數據處理裝置、或其他設備 上,使得在計算機、其他可編程數據處理裝置或其他設備上執行一系列操作步驟,以產生計 算機實現的過程,從而使得在計算機或其他可編程裝置上執行的指令能夠提供實現流程圖 和/或框圖中的方框中規定的功能/操作的過程。
[0032] 圖1示出了適於用來實現本發明實施方式的示例性計算機系統/伺服器12的框 圖。圖1顯示的計算機系統/伺服器12僅僅是一個示例,不應對本發明實施方式的功能和 使用範圍帶來任何限制。
[0033]如圖1所示,計算機系統/伺服器12以通用計算設備的形式表現。計算機系統 /伺服器12的組件可以包括但不限於:一個或者多個處理器或者處理單元16,系統存儲器 28,連接不同系統組件(包括系統存儲器 28和處理單元16)的總線18。
[0034]總線18表示幾類總線結構中的一種或多種,包括存儲器總線或者存儲器控制器, 外圍總線,圖形加速埠,處理器或者使用多種總線結構中的任意總線結構的局域總線。舉 例來說,這些體系結構包括但不限於工業標準體系結構(ISA)總線,微通道體系結構( Mc) 總線,增強型ISA總線、視頻電子標準協會(VESA)局域總線以及外圍組件互連(PCI)總線。 [0035] 計算機系統/伺服器I2典型地包括多種計算機系統可讀介質。這些介質可以是 任何能夠被計算機系統/伺服器I 2訪問的可用介質,包括易失性和非易失性介質,可移動 的和不可移動的介質。
[0036]系統存儲器28可以包括易失性存儲器形式的計算機系統可讀介質,例如隨機存 取存儲器(RAM) 30和/或高速緩存存儲器32。計算機系統/伺服器12可以進一步包括其 他可移動/不可移動的、易失性/非易失性計算機系統存儲介質。僅作為舉例,存彳諸系統34 可以用於讀寫不可移動的、非易失性磁介質(圖1未顯示,通常稱為"硬碟驅動器,,)。~儘管 圖1中未示出,可以提供用於對可移動非易失性磁碟(例如"軟盤")讀寫的磁碟驅動器, 以及對可移動非易失性光碟(例如CD-ROM,DVD-ROM或者其他光介質)讀寫的光碟驅動器。 在這些情況下,每個驅動器可以通過一個或者多個數據介質接口與總線 18相連。存儲器28 可以包括至少一個程序產品,該程序產品具有一組(例如至少一個)程序模塊這勝趕序趙: 塊被配置以執行本發明各實施方式的功能。 '
[0037]具有一組(至少一個)程序模塊42的程序/實用工具40,可以存儲在例如存儲器 28中,這樣的程序模塊42包括 但不限於 作業系統、一^t"或者多個應用程式、其他 -----------丄丄 =模塊以及程雜據,這些摘巾賄-個或某麵合巾可能傭_環馳實 序豐吳塊42通常執行本發明所描述的實施方式中的功能和/或方法。
[0038]。算機系,、/伺服器12也可以與-個或多個外部設備14(例如鍵盤、指向設備、 顯示器=等)通彳目,還可與一個或者多個使得用戶能與該計算機系統7伺服器12交互的 設備通彳目,和/或與使得該計算機系統/伺服器U能與一個或多個其他計算設備進行通信 的任何設備(、例如網卡,漏解調器等等)通信。這種通信可以通過輸入/輸出 (1/〇)接 口 22進行。並且,計算機系統/伺服器12還可以通過網絡適配器2〇與一個或者多個網絡 (例如區域網(LAN),廣域網(WAN)和/或公共網絡,例如網際網路)通信。如圖所示,網絡適 配器 2〇通過總線I8與計算機系統/伺服器12的其他模塊通信。應當明白,儘管圖中未示 出,可以結合計^機系統/伺服器12使用其他硬體和/或軟體模塊,包括但不限於:微代 碼、設備驅動器、冗餘處理單元、外部磁碟驅動陣列、狀 1£)系統、磁帶驅動器以及數據備份存 儲系統等。
[0039]圖2示意性示出了資料庫表中的數據記錄的示意圖200。數據記錄21〇示出了在 資料庫的表T中的數據記錄的示意圖,該表包括多個列C1、C2和C3,並且在表頭下逐行示 出了各個數據記錄的數值。例如,在第一個數據記錄中,列C1所對應的數值為i、列C2所對 應的數值為2、...。
[0040]數據記錄220示出了根據資料庫索引I1(C1,C2)而獲得的表τ中的數據記錄的 示意圖,在數據記錄220中的各個數據記錄按照(^列中數值的升序進行排序。另外,數據 記錄230示出了根據另一資料庫索引〗2(C2, C1)而獲得的表T中的數據記錄的示意圖,在 數據記錄230中的各個數據記錄按照C2列中數值的升序進行排序。通過使用索引n (C1, C2)和I2 (C2, Cl),可以有助於提高資料庫的響應速度。
[0041]圖3A和圖3B分別示意性示出了基於資料庫索引來執行單一任務和執行批處理任 務的序列時的操作的示意圖300A和300B。應當注意,在基於資料庫索引執行諸如查詢操作 等任務時,並不是直接從資料庫的表中讀取滿足查詢條件的數據記錄,而是首先按照數據 庫索引從數據表中將數據加載到數據緩存中,繼而再從數據緩存中讀取數據記錄。
[0042] 如圖3A所示,當執行單一任務330A時,基於索引1 (Cl,C2)而從數據表中被加載 到數據緩存中的內容如320A所示(假設數據緩存的大小為2,即可以容納兩個數據記錄), 此時,即可從數據緩存中獲取所需的查詢結果。然而,如圖3B所示,當執行批處理任務的 序列330B時,則可能會出現前後相繼的兩個批處理任務所訪問的數據記錄不同時存在於 數據緩存中的情況,此時還需要從數據表中重新進行加載。如圖3B所示,假設在執行序列 330B中的第一個任務時,如箭頭A1所示,首先從數據表310B中將數據記錄加載到數據緩存 320B中(此時數據緩存320B如實線框所示),並通過如箭頭B2所示的訪問操作來從如該 實線框中所示的數據緩存中訪問數據記錄。繼而,當執行序列330B中的第二個任務時要重 新從數據表310B中加載數據記錄(如箭頭A2所示),繼而通過如箭頭B2所示的訪問操作 來從如虛線框中所示的數據緩存中訪問數據記錄。
[0043] 通過如圖3A和圖3B所示的示意性過程可見,當序列330B中包括多個批處理任務 時(例如成千上萬甚至更多個),反覆從數據表中向數據緩存中加載數據記錄將會產生大 量的時間開銷,進而影響資料庫的響應速度。
[0044] 為此,本發明的各個實施方式提出了一種評估資料庫引擎對於批處理任務的效率 的技術方案。該技術方案可以通過估算基於資料庫引擎執行批處理任務時訪問資料庫的次 數,來估計該資料庫索引對於批處理任務的效率。應當注意,採用本發明所述的技術方案, 可以在真正執行各個批處理任務之前評估資料庫索引的效率。
[0045] 在本發明的一個實施方式中,提供了一種用於評估資料庫索引的效率的方法,包 括:接收對資料庫進行訪問的批處理任務的序列;估算指示在基於資料庫索引執行序列中 的批處理任務期間訪問資料庫的次數的指示符;以及基於指示符來評估資料庫索引對於序 列的效率,其中序列中的批處理任務是針對資料庫執行相同類型的操作的任務。
[0046]如圖4所示,該圖示意性示出了根據本發明一個實施方式的用於評估資料庫索引 的效率的方法的流程圖400。具體地,在步驟S402中,接收對資料庫進行訪問的批處理任務 的序列,其中序列中的批處理任務是針對資料庫執行相同類型的操作的任務。在此所述的 批處理任務是指被反覆多次執行的任務,這些任務的類型相同,並且可以具有相同或者不 同的輸入數據。
[0047] 示意性地,批處理任務的示例可以是一個SQL(結構化查詢語言)語句,例如針對 數據表T進行查詢的SQL語句:
[0048] Select C3From T Where Cl =? And C2 =?
[0049] 在上述SQL語句中,輸入數據可以指在"?"處的兩個參數的數值。應當注意,上文 所示的SQL語句僅僅示意性示出了批處理任務的一個具體示例,本領域技術人員還可以基 於SQL語言構造其他的批處理任務。對於如上所示形式的批處理任務,批處理任務的序列 中例如可以包括如下多個任務:
[0050] 任務 1 :Select C3From T Where Cl = lAnd C2 = 1
[0051] 任務 2 :Select C3From T Where Cl = lAnd C2 = 2
[0052]
[0053] 任務 N :Select C3From T Where Cl = 2And C2 = 2
[0054] 在步驟S404中,估算指示在基於資料庫索引執行序列中的批處理任務期間訪問 資料庫的次數的指示符。在初始情況下,可以將指示符的數值設置為0。可以針對序列中 的每個任務來估算是否需要訪問資料庫,並且在需要訪問資料庫時將該指示符增加一個增 量。在執行批處理任務期間,由於讀寫操作的時間開銷是影響資料庫響應速度的一個重要 指標,因而可以利用訪問資料庫的次數的多少來近似地衡量執行批處理任務的時間。
[0055] 應當注意,由於在基於某資料庫索引來執行某批處理任務序列時,索引的效率不 但關聯於索引本身,還與序列中各個批處理任務的順序相關。因而,對於特定的資料庫索 弓丨,基於該索引來執行不同的批處理任務序列時,索引的效率是不同的;另外,對於特定的 批處理任務序列,不同的資料庫索引的效率也可以不同。
[0056] 在步驟S406中,基於指示符來評估資料庫索引對於序列的效率。由於指示符數值 的大小可以在一定程度上反映執行批處理任務的時間開銷,因而可以基於該指示符來描述 資料庫索引對於批處理任務序列的效率。
[0057] 在本發明的一個實施方式中,效率與指示符成反比。具體地,在圖3B所示的示例 中,需要兩次訪問資料庫(如箭頭A1和A 2所示)才能將所需數據記錄加載到數據緩存中。 另外,在圖3B所示的示例中,當任務序列33〇B中的第二個任務為:Select C3From T Where Cl = lAnd C2 = 2時,則在執行第二個任務時可以直接從數據緩存320B中訪問所需的內 容。可見,索引的效率與批處理任務序列中的各個任務的排序是相關聯的。
[0058] 在此示例中,在第一種情況下的指示符的數值可以是"2",而第二中情況下,指示 符的數值可以是" 1 "。可以理解,指示符的數值越大,則表明對於資料庫的訪問次數越多,進 而讀寫操作的時間也就越長因而效率下降;反之,指示符的數值越小則表示效率越高。 [0059] 在本發明的一個實施方式中,基於指示符來評估資料庫索引對於序列的效率包 括:計算指示符與序列的長度的關聯關係以指示效率。儘管指示符的數值可以在一定程度 上反映讀寫操作佔用的絕對時間,然而由於該絕對時間並不能反映讀寫操作在執行全部批 處理任務的總耗時中所佔據的比例,並不能準確地反映資料庫索引對於序列的效率。因而, 還需要考慮批處理序列的長度對於整體效率的影響。
[0060] 在本發明的一個實施方式中,為簡單起見,可以計算指示符與批處理任務序列的 長度的比值來指示效率,或者本領域技術人員還可以構造其他公式來表示該效率。
[0061]在本發明的一個實施方式中,估算指示在基於資料庫索引執行序列中的批處理任 務期間訪問資料庫的次數的指示符包括:針對序列中的當前批處理任務,分別計算當前批 處理任務的輸入數據與當前批處理任務之前的至少一個批處理任務的輸入數據在資料庫 索引中的至少一個距離;以及基於至少一個距離來計算指示符。
[0062]本發明的一個原理在於,在根據資料庫索引來執行批處理任務時,需要根據數據 庫索引來從數據表中加載數據記錄到數據緩存中。如果當前任務的輸入數據與先前任務的 輸入數據在資料庫索引中的距離較小(例如,小於數據緩存的大小),則當前任務所對應的 數據記錄很可能已經被加載到數據緩存中,因而不必再次從數據表中進行加載。
[0063] 基於上述原理,在本發明的實施方式中,可以按照批處理任務序列中的順序,逐個 計算當前批處理任務和先前的至少一個批處理任務的輸入數據在資料庫索引中的距離。具 體地,可以將當前任務的輸入數據與先前的至少一個任務的輸入數據進行比較,以便估算 執行當前批處理任務時是否需要從資料庫中加載數據。
[0064] 在本發明的一個實施方式中,分別計算當前批處理任務的輸入數據與當前批處理 任務之前的至少一個批處理任務的輸入數據在資料庫索引中的至少一個距離包括:針對當 前批處理任務之前的至少一個批處理任務中的第一批處理任務,獲取當前批處理任務的輸 入數據在資料庫索引中的當前索引位置、以及第一批處理任務的輸入數據在資料庫索引中 的第一索引位置;以及將當前索引位置和第一索引位置的差值指定為當前批處理任務的輸 入數據與第一批處理任務的輸入數據在資料庫索引中的距離。
[0065]具體而言,假設需要計算當前任務的輸入數據與前一任務的輸入數據數據在數據 庫索引中的距離,則可以首先分別獲取當前任務的輸入數據在資料庫索引中的索引位置 (例如,8)以及前一任務的輸入數據在資料庫索引中的索引位置(例如,3),此時距離則為 (8-3) =5。應當注意,在此的距離的數值可以是兩個索引位置的差值的絕對值,由於差值 的符號僅表示兩個索引位置的前後關係,因而可以忽略距離的正負符號。
[0066] 在本發明的一個實施方式中,如果在計算指示符時希望考慮當前任務前面的多個 任務,還可以基於上文所述的方法來逐一計算當前任務的輸入數據與前面的多個任務的數 據輸入之間距離。
[0067] 在本發明的一個實施方式中,基於至少一個距離來計算指示符包括:針對至少一 個距離中的每個當前距離,響應於當前距離大於或者等於數據緩存的大小而將指示符增加 一增量。假設數據緩存的大小為5,繼續上文所示的示例,則在距離為8-3 > 5的情況下,可 以將指示符的數值增加一增量。為簡單起見,可以將該增量的數值設置為1。
[0068] 在本發明的一個實施方式中,當前批處理任務之前的至少一個批處理任務是緊鄰 當前批處理任務的批處理任務,以及預定義的權重為1。
[0069] 在下文中,將結合圖5和圖6描述如何估算資料庫索引的效率。在此示例中,僅考 慮當前任務與之前的一個任務的輸入數據的距離的情況。圖5示意性示出了根據本發明一 個實施方式的估算第一資料庫索引I1(C1,C2)的效率的過程的示意圖500。假設批處理任 務序列中包括10個任務,並且繼續上文的SQL語句的示例,圖5中的標記512所在的行中 示出了序列中的各個任務的輸入數據在索引I1(C1,C2)中的位置。例如,第一方框中的(3, 1)表示與C1列相對應的輸入數據在索引II中的位置為3,與C2列相對應的輸入數據在索 引II中的位置為1 ;第二方框中的(8,2)表示與C1列相對應的輸入數據在索引II中的位 置為8,與C2列相對應的輸入數據在索引II中的位置為2 ;以此類推。
[0070] 在圖5中,以條紋方框表示需要從數據表中加載數據,以灰度方框表示不需要從 數據表中加載數據。現在參見標記514所示的行,由於序號為1的方框表示序列中的第一 個任務,此時與第一任務相對應的數據記錄已經被加載到數據緩存中。因而,序號為1的方 框以灰度示出,表示不需要重新加載數據。
[0071] 現在參見標記516所示的行,序號為2的方框的任務的兩個輸入數據的位置分別 為(8, 2),因而按照索引II計算的距離為8-3 = 5,距離值大於等於數據緩存的大小5,因而 需要從數據表中加載數據。類似地,還可以處理序列中的其餘任務,最終獲得如標記520 - 行所示的結果。在此示例中,指示符的數值為6而序列長度為10,則索引II的效率指標可 以表示為:6/10 = 60%。在此實施方式中,效率指標越高則表示基於索引II來執行批處理 任務時所花費的時間越多。
[0072]為了更加符合人們的習慣,可以索引的效率設置為與指示符成反比,例如,可以以 如下方式計算效率指標二1-6/10 = 40%,此時效率指標越高表示索引的效率越高。
[0073] 圖6示意性示出了根據本發明一個實施方式的估算第一資料庫索引12 (C2,C1)的 效率的過程的示意圖600。類似於上文參見圖5的描述,現在參見標記614所示的行,由於 序號為1的方框表示序列中的第一個任務,此時與第一任務相對應的數據記錄已經被加載 到數據緩存中。因而,序號為1的方框以灰度示出,表示不需要重新加載數據。
[0074] 現在參見標記616所示的行,序號為2的方框的任務的兩個輸入數據的位置分別 為(8, 2),因而按照索引12計算的距離為2-1 = 1,距離值小於數據緩存的大小5,因而不需 要從數據表中加載數據。類似地,還可以處理序列中的其餘任務,最終獲得如標記620-行 所示的結果。在此實施方式中,按照第一種方式表示的效率指標為0,而按照第二種方式表 示的效率指標為100%。
[0075] 在本發明的一個實施方式中,增量計算如下:根據與當前距離相對應的之前批處 理任務與當前批處理任務之間的位移值,向增量賦予預定義的權重。
[0076] 在考慮當前任務之前的多個任務的情況下,可以對不同的位移值賦予不同的權 重。例如,假設考慮當前任務之前的3個任務的情況下,可以向當前任務之前的第一個任務 賦予權重5,向當前任務之前的第二個任務賦予權重 3,並向當前任務之前的第三個任務賦 予權重2。不同的權重可以表示相對於不同位移處的任務所獲得的結果的可靠性。例如,向 與當前任務之前的第一個任務(位移最小)賦予最高的權重(5),可以表示認為基於位移最 小的任務獲得的是否需要訪問資料庫的判斷最為可信,因而需要在計算增量時給予更高的 權重。可以基於所賦予的權重來計算實際權重。例如,對於當前任務之前的第一個任務,實 際權重=5/(5+3+2) =0· 5。
[0077] 在下文表1中示出了在考慮到當前任務之前的3個任務時,獲取訪問所述資料庫 的次數的指示符期間的各個增量Pi的計算過程(此時假設數據緩存大小為2)。
[0078] 表1針對序列中的任務來計算增量
[0079]
【權利要求】
1. 一種用於評估資料庫索引的效率的方法,包括: 接收對資料庫進行訪問的批處理任務的序列; 估算指示在基於所述資料庫索引執行所述序列中的所述批處理任務期間訪問所述數 據庫的次數的指示符;以及 基於所述指示符來評估所述資料庫索引對於所述序列的效率, 其中所述序列中的所述批處理任務是針對所述資料庫執行相同類型的操作的任務。
2. 根據權利要求1所述的方法,其中基於所述指示符來評估所述資料庫索引對於所述 序列的效率包括: 計算所述指示符與所述序列的長度的關聯關係以指示所述效率。
3. 根據權利要求1或2所述的方法,其中估算指示在基於所述資料庫索引執行所述序 列中的所述批處理任務期間訪問所述資料庫的次數的指示符包括:針對所述序列中的當前 批處理任務, 分別計算所述當前批處理任務的輸入數據與所述當前批處理任務之前的至少一個批 處理任務的輸入數據在所述資料庫索引中的至少一個距離;以及 基於所述至少一個距離來計算所述指示符。
4. 根據權利要求3所述的方法,其中分別計算所述當前批處理任務的輸入數據與所述 當前批處理任務之前的至少一個批處理任務的輸入數據在所述資料庫索引中的至少一個 距離包括:針對所述當前批處理任務之前的至少一個批處理任務中的第一批處理任務, 獲取所述當前批處理任務的所述輸入數據在所述資料庫索引中的當前索引位置、以及 所述第一批處理任務的所述輸入數據在所述資料庫索引中的第一索引位置;以及 將所述當前索引位置和所述第一索引位置的差值指定為所述當前批處理任務的輸入 數據與所述第一批處理任務的輸入數據在所述資料庫索引中的距離。
5. 根據權利要求3所述的方法,其中基於所述至少一個距離來計算所述指示符包括: 針對所述至少一個距離中的每個當前距離, 響應於所述當前距離大於或者等於數據緩存的大小而將所述指示符增加一增量。
6. 根據權利要求5所述的方法,其中所述增量計算如下: 根據與所述當前距離相對應的之前批處理任務與所述當前批處理任務之間的位移值, 向所述增量賦予預定義的權重。
7. 根據權利要求6所述的方法,其中所述當前批處理任務之前的至少一個批處理任務 是緊鄰所述當前批處理任務的批處理任務,以及所述預定義的權重為1。
8. 根據權利要求1或2所述的方法,其中所述效率與所述指示符成反比。
9. 一種用於在資料庫中執行序列中的批處理任務的方法,包括: 針對多個資料庫索引來分別執行根據權利要求1-8所述的用於評估資料庫索引的效 率的方法,以計算所述多個資料庫索引中的每個資料庫索引的效率;以及 選擇效率最高的資料庫索引來執行所述序列中的批處理任務。
10. -種用於評估資料庫索引的效率的裝置,包括: 接收模塊,配置用於接收對資料庫進行訪問的批處理任務的序列; 估算模塊,配置用於估算指示在基於所述資料庫索引執行所述序列中的所述批處理任 務期間訪問所述資料庫的次數的指示符;以及 評估模塊,配置用於基於所述指示符來評估所述資料庫索引對於所述序列的效率, 其中所述序列中的所述批處理任務是針對所述資料庫執行相同類型的操作的任務。
11. 根據權利要求10所述的裝置,其中所述評估模塊包括: 計算模塊,配置用於計算所述指示符與所述序列的長度的關聯關係以指示所述效率。
12. 根據權利要求10或11所述的裝置,其中所述估算模塊包括: 距離計算模塊,配置用於針對所述序列中的當前批處理任務,分別計算所述當前批處 理任務的輸入數據與所述當前批處理任務之前的至少一個批處理任務的輸入數據在所述 資料庫索引中的至少一個距離;以及 指示符計算模塊,配置用於基於所述至少一個距離來計算所述指示符。
13. 根據權利要求12所述的裝置,其中所述距離計算模塊包括: 獲取模塊,配置用於針對所述當前批處理任務之前的至少一個批處理任務中的第一 批處理任務,獲取所述當前批處理任務的所述輸入數據在所述資料庫索引中的當前索引位 置、以及所述第一批處理任務的所述輸入數據在所述資料庫索引中的第一索引位置;以及 求差模塊,配置用於將所述當前索引位置和所述第一索引位置的差值指定為所述當前 批處理任務的輸入數據與所述第一批處理任務的輸入數據在所述資料庫索引中的距離。
14. 根據權利要求12所述的裝置,其中所述指示符計算模塊包括: 增加模塊,配置用於針對所述至少一個距離中的每個當前距離,響應於所述當前距離 大於或者等於數據緩存的大小而將所述指示符增加一增量。
15. 根據權利要求14所述的裝置,其中所述增量計算如下: 根據與所述當前距離相對應的之前批處理任務與所述當前批處理任務之間的位移值, 向所述增量賦予預定義的權重。
16. 根據權利要求15所述的裝置,其中所述當前批處理任務之前的至少一個批處理任 務是緊鄰所述當前批處理任務的批處理任務,以及所述預定義的權重為1。
17. 根據權利要求10或11所述的裝置,其中所述效率與所述指示符成反比。
18. -種用於在資料庫中執行序列中的批處理任務的裝置,包括: 根據權利要求10-17所述的用於評估資料庫索引的效率的裝置,以計算所述多個數據 庫索引中的每個資料庫索引的效率;以及 選擇模塊,配置用於選擇效率最高的資料庫索引來執行所述序列中的批處理任務。
【文檔編號】G06F17/30GK104298691SQ201310306512
【公開日】2015年1月21日 申請日期:2013年7月19日 優先權日:2013年7月19日
【發明者】李碩, 楊新穎, 周祥 申請人:國際商業機器公司