用于大數(shù)據(jù)的結構化查詢的高效性能預測的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種用于大數(shù)據(jù)的結構化查詢的高效性能預測的方法和系統(tǒng)。所述系統(tǒng)包括:db模擬器模塊,其用于基于通過從開發(fā)環(huán)境外推統(tǒng)計信息導出的空模式創(chuàng)建模擬數(shù)據(jù)庫。執(zhí)行計劃生成模塊,其用于生成查詢的查詢執(zhí)行計劃。查詢分類模塊,其用于基于運算參數(shù)將每個子查詢分類為全表掃描、主索引掃描、快速索引掃描和非唯一索引掃描中的至少一個。時間確定模塊,其用于在模擬數(shù)據(jù)庫上執(zhí)行每個子查詢以確定輸入輸出(IO)訪問時間和運算時間。ERT預測模塊,其用于基于所述IO訪問時間、所述運算時間和網絡時間預測要在所述成品數(shù)據(jù)庫中執(zhí)行的查詢的所述ERT。
【專利說明】
用于大數(shù)據(jù)的結構化查詢的高效性能預測的方法和系統(tǒng)
[0001] 優(yōu)先權信息
[0002] 本專利申請要求于2014年11月14日提交的編號為3600/MUM/2014的印度專利 申請的優(yōu)先權。
技術領域
[0003] 本文中所描述的本公開總體涉及一種數(shù)據(jù)庫管理系統(tǒng),并且更具體地,涉及用于 預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(elapsed response time)的數(shù)據(jù)庫管 理系統(tǒng)。
【背景技術】
[0004] 由于大量數(shù)據(jù),大數(shù)據(jù)范式已經引發(fā)了應用程序的具有影響力的性能。應用程序 的性能已經基于各種參數(shù)被評估。便于評估性能的一個關鍵參數(shù)是查詢的響應時間。對于 結構化數(shù)據(jù)庫應用程序而言,查詢的響應時間是針對部署在成品數(shù)據(jù)庫中的大量數(shù)據(jù)的子 集而測試的。普遍認為,有時這樣的數(shù)據(jù)庫應用程序中的響應時間可能會隨數(shù)據(jù)量在一定 時間內的增加而非線性地增加。響應時間的非線性增加可能反過來會導致對提供給應用程 序的用戶的性能保證構成侵害。
[0005] 響應時間的該非線性增加是因為被用于測試查詢的常規(guī)測試技術而產生。常規(guī)測 試技術包括對大量數(shù)據(jù)的子集的查詢進行測試。因此,為了使用常規(guī)測試技術來評估性能, 應用程序可能需要各種資源,諸如能夠存儲數(shù)萬億條記錄的存儲服務器。但是用于評估性 能的這種資源部署可能會導致產生巨大成本。此外,即使資源被布置,針對大量數(shù)據(jù)的查詢 的測試可能增加評估時間,且因此延遲應用程序的部署。
[0006] 為了克服上述的缺陷,已經在本領域提出了基于各種統(tǒng)計機器學習的模型,其使 用過去的查詢創(chuàng)建學習基礎,且然后基于最鄰近方法預測查詢的響應時間。但這樣的模型 不能隨數(shù)據(jù)量在一定時間內的線性增加而精確預測查詢的響應時間。
【發(fā)明內容】
[0007] 在描述本發(fā)明的系統(tǒng)和方法之前,應理解,本申請不限于所描述的特定系統(tǒng)和方 法,因為除了在本公開中明確示出之外,可以存在多個可能的實施例。也應理解,在說明書 中使用的術語僅是為了描述具體形式或實施例的目的,并且不旨在限制本申請的范圍。本
【發(fā)明內容】
被提供以介紹與用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT) 的系統(tǒng)和方法相關的概念且所述概念將在下面的【具體實施方式】中被進一步描述。本發(fā)明內 容不旨在標識:本公開的必要特征不旨在用于確定或限制本公開的范圍。
[0008] 在一個實施方式中,公開了一種用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響 應時間(ERT)的系統(tǒng)。在一個方面,系統(tǒng)可包括處理器和耦接到處理器的存儲器。處理器 可執(zhí)行存在于存儲器中的多個模塊。多個模塊還可包括db模擬器模塊、執(zhí)行計劃生成模 塊、時間確定模塊和ERT預測模塊。db模擬器模塊可基于通過從開發(fā)環(huán)境外推統(tǒng)計信息導 出的空模式在開發(fā)環(huán)境中創(chuàng)建對應于成品數(shù)據(jù)庫的模擬數(shù)據(jù)庫。執(zhí)行計劃生成模塊可基于 模擬數(shù)據(jù)庫生成查詢的查詢執(zhí)行計劃。查詢執(zhí)行計劃表示要在成品數(shù)據(jù)庫中執(zhí)行的所述查 詢的一個或多個子查詢。在一個方面,每個子查詢可與運算參數(shù)相關聯(lián)。查詢分類模塊可 基于運算參數(shù)將每個子查詢分類為至少一種類型的掃描。掃描類型的實例可包括但不限于 全表掃描、主索引掃描、快速索引掃描和非唯一索引掃描。時間確定模塊可在存在于開發(fā)環(huán) 境中的測試數(shù)據(jù)庫上執(zhí)行每個子查詢以確定對應于每個子查詢的輸入輸出(10)訪問時間 和對應于每個子查詢的運算時間。10訪問時間可基于分類而預測。運算時間可基于存在 于每個子查詢中的一個或多個運算符而預測。ERT預測模塊可基于對應于每個子查詢的10 訪問時間、對應于每個子查詢的運算時間和網絡時間預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的 ERT。網絡時間表示在通過網絡發(fā)送執(zhí)行每個子查詢時檢索的數(shù)據(jù)所需要的時間。
[0009] 在另一實施方式中,一種用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間 (ERT)的方法,為了預測要在成品數(shù)據(jù)庫中執(zhí)行的ERT,首先基于通過從開發(fā)環(huán)境外推統(tǒng)計 信息導出的空模式在開發(fā)環(huán)境中創(chuàng)建對應于成品數(shù)據(jù)庫的模擬數(shù)據(jù)庫。在創(chuàng)建模擬數(shù)據(jù)庫 后,可基于模擬數(shù)據(jù)庫生成查詢的查詢執(zhí)行計劃。查詢執(zhí)行計劃表示要在成品數(shù)據(jù)庫中執(zhí) 行的查詢的一個或多個子查詢。在一個方面,每個子查詢可與運算參數(shù)相關聯(lián)。在生成查 詢執(zhí)行計劃之后,可基于運算參數(shù)將每個子查詢分類為至少一種類型的掃描。掃描類型的 實例可包括但不限于全表掃描、主索引掃描、快速索引掃描和非唯一索引掃描。在每個子查 詢的分類之后,可在存在于開發(fā)環(huán)境中的測試數(shù)據(jù)庫上執(zhí)行每個子查詢以確定對應于每個 子查詢的輸入輸出(10)訪問時間和對應于每個子查詢的運算時間。在一個方面,10訪問 時間可基于分類而預測。在一個方面,運算時間可基于存在于每個子查詢中的一個或多個 運算符而預測。一旦10訪問時間和運算時間被確定,要在成品數(shù)據(jù)庫中執(zhí)行的查詢的ERT 可基于對應于每個子查詢的10訪問時間、對應于每個子查詢的運算時間和網絡時間而預 測。網絡時間表示通過網絡發(fā)送在執(zhí)行每個子查詢時檢索的數(shù)據(jù)所需要的時間。在一個方 面,用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的ERT的上述方法可通過使用存儲在存儲器中 的編程指令的處理器進行。
[0010] 在另一實施方式中,一種包含可在用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝 響應時間(ERT)的計算裝置中可執(zhí)行的程序的非臨時性計算機可讀介質。程序包括用于基 于通過從開發(fā)環(huán)境外推統(tǒng)計信息導出的空模式在開發(fā)環(huán)境中創(chuàng)建對應于成品數(shù)據(jù)庫的模 擬數(shù)據(jù)庫的程序代碼。程序還可包括程序代碼,其用于基于模擬數(shù)據(jù)庫生成查詢的查詢執(zhí) 行計劃。查詢執(zhí)行計劃表示要在成品數(shù)據(jù)庫中執(zhí)行的查詢的一個或多個子查詢。在一個方 面,每個子查詢可與運算參數(shù)相關聯(lián)。程序還可包括程序代碼,其用于基于運算參數(shù)將每個 子查詢分類為至少一種類型的掃描。掃描類型的實例可包括但不限于全表掃描、主索引掃 描、快速索引掃描和非唯一索引掃描。程序還可包括程序代碼,其用于在存在于開發(fā)環(huán)境中 的測試數(shù)據(jù)庫上執(zhí)行每個子查詢以確定對應于每個子查詢的輸入輸出(10)訪問時間,和 對應于每個子查詢的運算時間。10訪問時間可基于分類而預測。運算時間可基于存在于每 個子查詢中的一個或多個運算符而預測。程序還可包括程序代碼,其用于基于對應于每個 子查詢的10訪問時間、對應于每個子查詢運算時間和網絡時間預測要在成品數(shù)據(jù)庫中執(zhí) 行的查詢的ERT。網絡時間表示通過網絡發(fā)送在執(zhí)行每個子查詢時檢索的數(shù)據(jù)所需要的時 間。
【附圖說明】
[0011] 當結合附圖閱讀時,可更好地理解實施例的前述詳細描述。為了說明本公開的目 的,在本公開的本文檔示例結構示出;然而,本公開不限于本文檔和附圖中公開的具體方法 和設備。
[0012] 參照附圖描述【具體實施方式】。在圖中,參考號最左邊的數(shù)字標識附圖標記首次出 現(xiàn)的附圖。相同數(shù)字用于在整個附圖中來指相同特征和組件。
[0013] 圖1示出根據(jù)本公開的實施例的用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝 響應時間(ERT)的系統(tǒng)的網絡實施方式。
[0014] 圖2示出根據(jù)本公開的實施例的系統(tǒng),。
[0015] 圖3示出根據(jù)本公開的實施例的實例。
[0016] 圖4和圖5示出根據(jù)本公開的實施例的用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的 ERT的方法。
【具體實施方式】
[0017] 現(xiàn)在將詳細地討論示出其所有功能的本公開的一些實施例。詞"包括"、"具有"、 "包含"和"包括",及其其它形式旨在指在意思上是等同的且其開放度結束于以下情況:這 些詞中的任何一個后面跟隨的一個項目或多個項目不意味著是該項目或這些項目的窮舉 列表,或意味著被限于僅列出的一個或多個項目的窮舉列表。還必須注意,如本文和所附權 利要求書中所使用的,除非上下文另有明確說明,否則單數(shù)形式"a"、"an"、和"the"包括復 數(shù)引用。雖然類似或等同于本文描述的那些的任何系統(tǒng)和方法可在實踐中或在本公開的實 施例的測試中使用,但是現(xiàn)在描述示例性系統(tǒng)和方法。所公開的實施例僅僅是本公開的示 例,其可以各種形式來體現(xiàn)。
[0018] 實施例的各種修改將對于本領域技術人員是顯而易見的且這里的一般原理可應 用于其它實施例。然而,本領域的普通技術人員將容易認識到,本公開不旨在被限于所說明 的實施例,而是應被賦予與本文中所描述的原理和特征一致的最廣范圍。
[0019] 描述用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT)的系統(tǒng)和方 法。為了預測ERT,本公開解釋基于空模式在開發(fā)環(huán)境中創(chuàng)建模擬數(shù)據(jù)庫的直覺方法。在一 個方面,模擬數(shù)據(jù)庫可通過從開發(fā)環(huán)境外推統(tǒng)計信息來創(chuàng)建。系統(tǒng)通過線性外推對數(shù)據(jù)量 敏感的統(tǒng)計信息來模擬大型數(shù)據(jù)庫。統(tǒng)計信息的實例可包括表、塊、索引塊和數(shù)據(jù)值。應理 解,ERT可取決于數(shù)據(jù)庫的性能、數(shù)據(jù)庫的相對大小、數(shù)據(jù)量、對數(shù)據(jù)庫運算符(諸如join) 有效的存儲器的相對大小、查詢設計、數(shù)據(jù)庫模式和查詢執(zhí)行計劃。在所有的上述各項中, 查詢執(zhí)行計劃、數(shù)據(jù)庫的相對大小,和存儲器的相對大小可隨數(shù)據(jù)量的增加而改變。
[0020] -旦創(chuàng)建了模擬數(shù)據(jù)庫,系統(tǒng)還基于模擬數(shù)據(jù)庫生成查詢的查詢執(zhí)行計劃。查詢 執(zhí)行計劃表示要在成品數(shù)據(jù)庫中執(zhí)行的查詢的一個或多個子查詢。每個子查詢與運算參數(shù) 相關聯(lián)。運算參數(shù)的實例可包括但不限于表、訪問的模式、基數(shù)、輸出大小、成本(cost),和 輸入輸出成本(Input Output cost)。在生成查詢執(zhí)行計劃之后,每個子查詢可基于運算參 數(shù)而分類。一方面,每個子查詢可被分類為至少一種類型的掃描。掃描類型的實例可包括 但不限于,基于表中的數(shù)據(jù)訪問模式的全表掃描、快速索引掃描、主索引掃描和非唯一索引 掃描。此外,每個子查詢可在存在于開發(fā)環(huán)境中的測試數(shù)據(jù)庫上執(zhí)行以確定對應于每個子 查詢的輸入輸出(10)訪問時間,和對應于每個子查詢的運算時間。
[0021] 由于系統(tǒng)可能具有一些網絡延遲時間以通過網絡發(fā)送在執(zhí)行每個子查詢時檢索 的數(shù)據(jù),所以查詢的ERT可基于對應于每個子查詢的10訪問時間、對應于每個子查詢的運 算時間和網絡時間的總和而預測。一方面,查詢的ERT可通過合計對應于每個子查詢的10 訪問時間和對應于每個子查詢的運算時間以便確定預測的子查詢執(zhí)行時間和預測的子查 詢執(zhí)行時間和網絡時間從而確定ERT來進行預測。預測ERT的公式是
[0022]
CD
[0023] 在一個方面,系統(tǒng)還限定用于要在成品數(shù)據(jù)庫中執(zhí)行的查詢的性能基準值。性能 基準值可基于ERT、預測的子查詢執(zhí)行時間、輸入輸出成本、邏輯讀取、物理讀取、基數(shù),和輸 出大小而限定。
[0024] 雖然所述的用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT)的系 統(tǒng)和方法可在任何數(shù)量的不同的計算系統(tǒng)、環(huán)境,和/或配置中實施,但是在下面的示例性 系統(tǒng)的上下文中描述這些實施例。
[0025] 現(xiàn)在參考圖1,公開了用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間 (ERT)的系統(tǒng)(以下稱為系統(tǒng)102)的網絡實施方式100。在一個實施例中,系統(tǒng)102基于 通過從開發(fā)環(huán)境外推統(tǒng)計信息導出的空模式而在開發(fā)環(huán)境中創(chuàng)建模擬數(shù)據(jù)庫。在創(chuàng)建模擬 數(shù)據(jù)庫后,系統(tǒng)102基于模擬數(shù)據(jù)庫生成查詢的查詢執(zhí)行計劃。在生成查詢執(zhí)行計劃之后, 系統(tǒng)102基于運算參數(shù)將每個子查詢分類為全表掃描、主索引掃描、快速索引掃描和非唯 一索引掃描中的至少一個。在每個子查詢的分類之后,系統(tǒng)102在存在于開發(fā)環(huán)境中的測 試數(shù)據(jù)庫上執(zhí)行每個子查詢以確定對應于每個子查詢的輸入輸出(10)訪問時間和運算時 間。一旦10訪問時間和運算時間被確定,系統(tǒng)102基于10訪問時間、運算時間,和網絡時 間預測要在成品數(shù)據(jù)庫執(zhí)行的查詢的ERT。網絡時間表示通過網絡傳輸在執(zhí)行每個子查詢 時檢索的數(shù)據(jù)所需要的時間。
[0026] 雖然本公開是考慮到系統(tǒng)102在服務器上實施而解釋的,但是應理解,系統(tǒng)102還 可在各種計算系統(tǒng)(諸如膝上型計算機、臺式計算機,筆記本計算機、工作站、大型計算機、 服務器、網絡服務器,基于云的計算環(huán)境)中實施。應理解,系統(tǒng)102可通過一個或多個用 戶裝置104-1、104-2. .. 104-N(以下統(tǒng)稱為用戶裝置104),或駐留在用戶裝置104中的應用 程序由多個用戶訪問。在一個實施方式中,系統(tǒng)102可包括基于云的計算環(huán)境,其中用戶可 操作被配置為執(zhí)行位于遠程的應用程序的個人計算系統(tǒng)。用戶裝置104的實例可包括但不 限于便攜式計算機、個人數(shù)字助理、手持式裝置和工作站。用戶裝置104通過網絡106通信 地耦接至系統(tǒng)102。
[0027] 在一個實施方式中,網絡106可以是無線網絡、有線網絡或其組合。網絡106可作 為不同類型的網絡(諸如內聯(lián)網、局域網(LAN)、廣域網(WAN)、互聯(lián)網,等)中的一個來實 施。網絡106可以是專用網絡或共享網絡。共享網絡代表使用各種協(xié)議(例如超文本傳輸 協(xié)議(HTTP)、傳輸控制協(xié)議/互聯(lián)網協(xié)議(TCP/IP)、無線應用協(xié)議(WAP)等)的不同類型 的網絡的聯(lián)合以彼此通信。網絡106還可包括各種網絡裝置,包括路由器、網橋、服務器、計 算裝置、存儲裝置等。
[0028] 現(xiàn)在參考圖2,示出根據(jù)本公開的實施例的系統(tǒng)102。在一個實施例中,系統(tǒng)102可 包括至少一個處理器202、輸入/輸出(I/O)接口 204和存儲器206。至少一個處理器202 可被實施為一個或多個微處理器、微型計算機、微控制器、數(shù)字信號處理器、中央處理單元、 狀態(tài)機、邏輯電路系統(tǒng),和/或基于運算指令操縱信號的任何裝置。其它功能中,至少一個 處理器202被配置為讀取并執(zhí)行存儲在存儲器206中的計算機可讀指令。
[0029] I/O接口 204可包括各種軟件和硬件接口,例如,網絡接口、圖形用戶界面等。I/O 接口 204可允許系統(tǒng)102直接或通過客戶端裝置104與用戶進行交互。此外,I/O接口 204 可使系統(tǒng)102與其它計算裝置(諸如網絡服務器和外部數(shù)據(jù)服務器(未示出))進行通信。 I/O接口 204可促進各種網絡和協(xié)議類型(包括有線網絡(例如,LAN、電纜等)和無線網 絡(諸如WLAN、蜂窩,或衛(wèi)星))內的多個通信。I/O接口 204可包括用于將多個裝置彼此 連接或連接到另一個服務器的一個或多個端口。
[0030] 存儲器206可包括本領域中已知的任何計算機可讀介質和計算機程序產品,例 如,易失性存儲器(諸如靜態(tài)隨機存取存儲器(SRAM)和動態(tài)隨機存取存儲器(DRAM)),和/ 或非易失性存儲器(諸如只讀存儲器(R0M)、可擦可編程R0M、閃速存儲器、硬盤、光盤和磁 帶)。存儲器206可包括模塊208和數(shù)據(jù)210。
[0031] 模塊208包括例程、程序、對象、組件、數(shù)據(jù)結構等,它們執(zhí)行特定任務或實施特定 抽象數(shù)據(jù)類型。在一個實施方式中,模塊208可包括db模擬器模塊212、執(zhí)行計劃生成模塊 214、查詢分類模塊216、時間確定模塊218、ERT預測模塊220、基準代理模塊222和其它模 塊224。其它模塊224可包括補充系統(tǒng)102的應用和功能的程序或代碼指令。這里描述的 模塊208可作為可以在系統(tǒng)102的基于云計算環(huán)境中執(zhí)行的軟件模塊而實施。
[0032] 數(shù)據(jù)210 (除其它事項外)充當用于存儲由一個或多個模塊208處理、接收以及生 成的數(shù)據(jù)的知識庫。數(shù)據(jù)210還可包括模擬數(shù)據(jù)庫226、測試數(shù)據(jù)庫227,和其它數(shù)據(jù)228。 其它數(shù)據(jù)228可包括在其它模塊224中的一個或多個模塊的執(zhí)行的結果而產生的數(shù)據(jù)。
[0033] 在一個實施方式中,首先,用戶可使用客戶端裝置104以經由I/O接口 204來訪問 系統(tǒng)102。用戶可使用I/O接口 204注冊他們本身以便使用系統(tǒng)102。一方面,用戶可訪問 系統(tǒng)102的I/O接口 204以便預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT)。 為了預測ERT,系統(tǒng)102可采用多個模塊,即db模擬器模塊212、執(zhí)行計劃生成模塊214、查 詢分類模塊216、時間確定模塊218、ERT預測模塊220和基準代理模塊222。下面描述多個 模塊的詳細工作。
[0034] 進一步參考圖2,應理解,成品數(shù)據(jù)庫可包括大量的數(shù)據(jù)。由于成品數(shù)據(jù)庫包含大 量的數(shù)據(jù),所以預測查詢的ERT可能是在包含大量數(shù)據(jù)的成品數(shù)據(jù)庫上執(zhí)行查詢時消耗的 時間??梢赃M一步理解,ERT可取決于數(shù)據(jù)庫的性能、數(shù)據(jù)庫的相對大小、和對數(shù)據(jù)庫運算符 (諸如join)有效的存儲器的相對大小、查詢設計、數(shù)據(jù)庫模式和查詢執(zhí)行計劃。在所有的 上述各項中,查詢執(zhí)行計劃、數(shù)據(jù)庫的相對的存儲器大小,和對數(shù)據(jù)庫運算符有效的相對的 存儲器大小對數(shù)據(jù)庫產生主要影響且進一步隨數(shù)據(jù)量的增加而改變。為了預測ERT,db模 擬器模塊212基于空模式在開發(fā)環(huán)境中創(chuàng)建模擬數(shù)據(jù)庫226。模擬數(shù)據(jù)庫226內容較少但 有利于基于統(tǒng)計信息生成查詢執(zhí)行計劃。一方面,空模式可通過從開發(fā)環(huán)境外推統(tǒng)計信息 來導出。統(tǒng)計信息的實例可包括但不限于表、塊、索引塊和數(shù)據(jù)值。
[0035] 在模擬數(shù)據(jù)庫226的生成之后,執(zhí)行計劃生成模塊214基于模擬數(shù)據(jù)庫生成查詢 的查詢執(zhí)行計劃。執(zhí)行計劃生成模塊214使用模擬數(shù)據(jù)庫的表、索引和列來生成查詢執(zhí)行 計劃。查詢執(zhí)行計劃表示要在成品數(shù)據(jù)庫中執(zhí)行的查詢的一個或多個子查詢,其中一個或 多個子查詢被整理以導出查詢。每個子查詢在背景中被獨立地執(zhí)行以從成品數(shù)據(jù)庫中檢索 各自數(shù)據(jù)。一方面,每個子查詢可與運算參數(shù)相關聯(lián)。運算參數(shù)可包括但不限于表、訪問的 模式、基數(shù)、輸出大小,和輸入輸出成本。
[0036] 在一個實施例中,基數(shù)表示執(zhí)行查詢時返回的行數(shù)?;鶖?shù)進一步從一個步驟到其 后繼步驟確定輸出的大小。在一個實例中,考慮查詢如下:
[0037] Select sum(s_acctbal)from supplier where s_suppkey = ps_suppkey··· (1)
[0038] 由執(zhí)行計劃生成模塊214生成的用于上述查詢(1)的執(zhí)行計劃示于圖3?;?查詢(1),可理解,查詢(1)被推導以便從兩個表(即"供應商"和"part SUpp_sk")檢索 "account balance"的"sum"(賬戶結余的和),其中存在于"供應商"("supplier")中的 "suppkey"(主鍵)等同于存在于"partsupp_sk"的"ps_suppkey"(外鍵)。為了生成查 詢執(zhí)行計劃,執(zhí)行計劃生成模塊214確定存在于查詢(1)中的一個或多個子查詢。存在于 查詢(1)中的一個或多個子查詢與選擇指令、檢索的數(shù)據(jù)(sum)的合計,和與表相關聯(lián)的嵌 套循環(huán)(即"supplier"( "供應商")中的全表掃描和"partsupp_sk"中的索引范圍掃描) 相關聯(lián)。
[0039] 在一個實施例中,在生成查詢執(zhí)行計劃之后,執(zhí)行計劃生成模塊214將每個子查 詢映射到等同的獨立查詢。一方面,在子查詢的執(zhí)行滿足至少一個以下提到的參數(shù)時,每個 映射后的子查詢視為等同于查詢的相應子查詢。
[0040] a)執(zhí)行時間相同。
[0041 ] b)相同數(shù)量的輸出行。
[0042] c)相同數(shù)量的邏輯讀取和物理讀取。
[0043] 例如,考慮與前述相同的查詢(1)。查詢(1)可被映射為兩個子查詢,即
[0044] <select/*+FULL*/s_acctbal,s_suppkey from supplier〉 (2),和
[0045] <select/*+index(partsupp_sk)*/count(*)from partsupp whereps_suppkey>0> (3)
[0046] 在一個實施例中,執(zhí)行計劃生成模塊214不會將哈希連接(hash join)查詢/步驟 分裂為單獨的獨立查詢,而是將其它與它的兩個表("supplier、"供應商"),"partsUpp_ sk")保持完整,并將它傳遞到查詢分類模塊216。
[0047] 查詢分類模塊216基于運算參數(shù)將每個子查詢分類為至少一個類型的掃描。掃描 類型的實例可包括但不限于全表掃描、主索引掃描、快速掃描索引和非唯一索引掃描。在一 個方面中,每個子查詢可被分類以確定對應于每個子查詢的輸入輸出(10)訪問時間和對 應于每個子查詢的運算時間。在一個實施例中,查詢分類模塊216基于影響從磁盤、操作系 統(tǒng)高速緩存或數(shù)據(jù)庫高速緩存檢索的數(shù)據(jù)的10訪問時間的數(shù)據(jù)訪問模式對每個子查詢進 行分類。為了確定對應于每個子查詢的10訪問時間,時間確定模塊218基于分類在模擬數(shù) 據(jù)庫226執(zhí)行每個子查詢。應注意,10訪問時間可基于印度專利申請2853/MUM/2013中公 開的方法/技術而確定,所述專利申請作為參考而并入。
[0048] 在從磁盤、操作系統(tǒng)緩存或數(shù)據(jù)庫緩存檢索數(shù)據(jù)時,時間確定模塊218可進一步 識別影響運算時間且存在于每個子查詢中的一個或多個運算符。一個或多個運算符的實 例可包括但不限于Aggregate (合計)、Hash (哈希)、Nested (嵌套)、Sort (排序)、Merge and Hash(合并及哈希)。一旦識別了一個或多個運算符,時間確定模塊218就在存在于開 發(fā)環(huán)境中的測試數(shù)據(jù)庫227上執(zhí)行每個子查詢以確定對應于每個子查詢的運算時間。
[0049] 在一個實例中,考慮一個查詢(其與兩個表(1\和T 2)相關聯(lián))包括"排序"和"合 并"運算符。在大數(shù)據(jù)量'L'上的排序-合并聯(lián)合執(zhí)行時間是從兩個表TJPT 2返回的行的 排序時間。如公式1所示,排序時間由(SIYT1)和(SIYT2)表示,其包括它們的訪問時間和排 序后的行的合#時_
[0050]
[0051] 在一方面,合并時間相對于合并行數(shù)是線性關系的且從小數(shù)據(jù)量的合并時間 (MTS)線性地外推。如果為了排序而從表訪問的行數(shù)相對于數(shù)據(jù)量是不變的,那么聯(lián)合執(zhí)行 時間相對于數(shù)據(jù)量的增加將是線性的。排序時間是線性的,除非它在磁盤溢出。在磁盤上 溢出的運算數(shù)量取決于排序的執(zhí)行,所以與模擬數(shù)據(jù)庫226相關聯(lián)的成本可估計運算時間 而考慮。數(shù)據(jù)量'L'的'排序'運算成本(SCJ被計算為排序運算成本和表訪問之間的差 值。同樣地,這可針對小數(shù)據(jù)量'S'而計算。
[0052] 在另一實例中,考慮一個查詢(其與兩個表(TJPT2)相關聯(lián))包括'Nested Loop Join'(嵌套循環(huán)聯(lián)接)運算符。嵌套循環(huán)聯(lián)接的執(zhí)行時間(NLTJ取決于第一表的1\、訪問 時間、從第一表0\)過濾的行數(shù)和第二表(T 2)的重復索引掃描訪問時間,其中第二表(T2) 中的訪問模式由從第一表0\)返回的值驅動。對于從1\返回的行數(shù)(N R_以及用于 嵌套聯(lián)接(Νο?Υ)的匹配運算的時間,尺寸'L'下的執(zhí)行時間(NLIY)是對應于1\(10')和 Τ2(Ι0τ\)的10訪問時間的總和。最后一個分量為了統(tǒng)一數(shù)據(jù)增長可線性外推。在一個方 面,執(zhí)行時間(NLTJ可通過使用如下所述的公式2確定:
[0053]
[0054] 因此,以此方式,時間確定模塊218確定每個子查詢的10訪問時間和運算時間。
[0055] 在對應于每個子查詢的10訪問時間和對應于每個子查詢的運算時間的確定之 后,ERT預測模塊220預測將要在存在于生產環(huán)境中的成品數(shù)據(jù)庫中執(zhí)行的查詢的ERT。ERT 預測模塊220可基于對應于每個子查詢的10訪問時間、對應于每個子查詢的運算時間和網 絡時間預測ERT。在一個方面,網絡時間是指通過網絡發(fā)送在執(zhí)行每個子查詢時檢索的數(shù) 據(jù)所需要的時間。在一個實施例中,對應于查詢的網絡時間可取決于在執(zhí)行查詢時檢索的 數(shù)據(jù)量,其中所述數(shù)據(jù)量表示行數(shù)和輸出行的大小的乘積(即,行數(shù)*輸出行的大?。T?一個實施例中,ERT預測模塊220通過合計對應于每個子查詢的10訪問時間和對應于每個 子查詢的運算時間以確定預測的子查詢執(zhí)行時間從而聚集預測的子查詢執(zhí)行時間和網絡 時間以確定ERT來預測ERT。在統(tǒng)計表達式中,ERT預測模塊220通過使用下述公式預測 ERT :
[0056] ERT =網絡時間+Σ預測子查詢執(zhí)行時間(4)
[0057] 在一個實施例中,基準代理模塊222可限定用于在生產環(huán)境中執(zhí)行的查詢的性能 基準值。性能基準值是基于ERT、預測的子查詢執(zhí)行時間、10成本、邏輯讀取、物理讀取、基 數(shù)和輸出大小而限定的。因此,以此方式,上述方法有利于預測要在包含大量數(shù)據(jù)的成品數(shù) 據(jù)庫中執(zhí)行查詢的ERT。
[0058] 現(xiàn)在參考圖4,示出一種根據(jù)本公開的實施例的用于預測要在成品數(shù)據(jù)庫中執(zhí)行 的查詢的消逝響應時間(ERT)的方法400。方法400可在計算機可執(zhí)行指令的一般上下文 中描述。通常,計算機可執(zhí)行指令可包括例程、程序、對象、組件、數(shù)據(jù)結構、過程、模塊、功能 等,它們執(zhí)行特定函數(shù)或實施特定抽象數(shù)據(jù)類型。方法400可在其中由通過通信網絡鏈接 的遠程處理裝置執(zhí)行函數(shù)的分布式計算環(huán)境中實踐。在分布式計算環(huán)境中,計算機可執(zhí)行 指令可位于本地和遠程計算機存儲介質(包括存儲器存儲裝置)中。
[0059] 描述方法400的順序不旨在被解釋為限制,且任何數(shù)量的所述方法框可按任何順 序組合來實施方法400或替代方法。此外,在不偏離本文所描述的本公開的精神和范圍的 情況下,各個塊可從方法400中刪除。此外,方法可在任何合適的硬件、軟件、固件,或其組 合來實施。然而,為了便于解釋,在以下描述的實施例中,方法400可被認為如上所述在系 統(tǒng)102中實施。
[0060] 在塊402中,可基于通過從開發(fā)環(huán)境外推統(tǒng)計信息導出的空模式在開發(fā)環(huán)境中創(chuàng) 建模擬數(shù)據(jù)庫。在一個實施方式中,模擬數(shù)據(jù)庫可由db模擬器模塊212創(chuàng)建。
[0061 ] 在塊404中,可基于所述模擬數(shù)據(jù)庫生成查詢的查詢執(zhí)行計劃。在一個方面,查詢 執(zhí)行計劃表示要在成品數(shù)據(jù)庫中執(zhí)行的查詢的一個或多個子查詢。在一個方面,每個子查 詢可包括可與運算參數(shù)相關聯(lián)。在一個實施方式中,查詢的查詢執(zhí)行計劃可由執(zhí)行計劃生 成模塊214生成。
[0062] 在塊406中,每個子查詢可基于運算參數(shù)被分類為至少一個類型的掃描。掃描類 型的實例可包括但不限于全表掃描、主索引掃描、快速索引掃描和非唯一索引掃描。在一個 實施方式中,每個子查詢可由查詢分類模塊216分類。
[0063] 在塊408中,每個子查詢可在存在于開發(fā)環(huán)境中的測試數(shù)據(jù)庫上執(zhí)行以確定對應 于每個子查詢的輸入輸出(10)訪問時間,和對應于每個子查詢的運算時間。在一個方面, 對應于每個子查詢的10訪問時間可基于分類而預測。在一個方面,對應于每個子查詢時間 的運算符可基于存在于每個子查詢中的一個或多個運算符而預測。在一個實施方式中,每 個子查詢可由時間確定模塊218執(zhí)行。
[0064] 在塊410中,要在成品數(shù)據(jù)庫中執(zhí)行的查詢的ERT可基于對應于每個子查詢的10 訪問時間、對應于每個子查詢的運算時間,和網絡時間而預測。在一個方面,網絡時間表示 通過網絡發(fā)送在執(zhí)行每個子查詢時檢索的數(shù)據(jù)所需要的時間。在一個實施方式中,要在成 品數(shù)據(jù)庫中執(zhí)行的查詢的ERT可由ERT預測模塊220預測。
[0065] 現(xiàn)在參考圖5,示出根據(jù)本主題的實施例的用于預測ERT的方法410。
[0066] 在塊502中,對應于每個子查詢的10訪問時間和運算時間可被合計以確定預測的 子查詢執(zhí)行時間。在一個實施方式中,對應于每個子查詢的10訪問時間和對應于每個子查 詢的運算時間可由ERT預測模塊220合計。
[0067] 在塊504中,預測的子查詢執(zhí)行時間和網絡時間可被合計以確定ERT。在一個實施 方式中,預測的子查詢執(zhí)行時間和網絡時間可由ERT預測模塊220聚集。
[0068] 雖然用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT)的方法和系 統(tǒng)的實施方式已經以結構特征和/或方法專用的語言進行了描述,但是應理解,所附權利 要求不必限于所描述的具體特征或方法。相反,這些具體特征和方法被公開作為用于預測 查詢的ERT的實施方式的實例。
[0069] 上面所討論的示例實施例可提供某些優(yōu)點。雖然不需要實踐本公開的很多方面, 但是這些優(yōu)點可包括由以下特征提供的那些。
[0070] -些實施例可使系統(tǒng)和方法能夠預測在包含大量數(shù)據(jù)的數(shù)據(jù)庫上執(zhí)行的查詢的 消逝響應時間(ERT)。
[0071] -些實施例可使系統(tǒng)和方法能夠估計在不同大小的數(shù)據(jù)庫上進行查詢所花費的 SQL運算時間。
[0072] -些實施例可使系統(tǒng)和方法能夠預測涉及不同聯(lián)接運算符的級聯(lián)的復雜查詢的 ERT,其中復雜查詢被分類為一個或多個子查詢,從而與網絡時間一起關于每個子查詢而聚 集10訪問時間、運算時間。
【主權項】
1. 一種用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT)的方法,所述方 法包括: 由處理器基于通過從開發(fā)環(huán)境外推統(tǒng)計信息導出的空模式在所述開發(fā)環(huán)境中創(chuàng)建對 應于成品數(shù)據(jù)庫的模擬數(shù)據(jù)庫; 由所述處理器基于所述模擬數(shù)據(jù)庫生成所述查詢的查詢執(zhí)行計劃,其中所述查詢執(zhí)行 計劃表示要在成品數(shù)據(jù)庫中執(zhí)行的所述查詢的一個或多個子查詢,并且其中每個子查詢與 運算參數(shù)相關聯(lián); 由所述處理器基于所述運算參數(shù)將每個子查詢分類為至少一種類型的掃描; 由所述處理器在存在于所述開發(fā)環(huán)境中的測試數(shù)據(jù)庫上執(zhí)行每個子查詢以確定對應 于每個子查詢的輸入輸出(10)訪問時間,和對應于每個子查詢的運算時間,其中所述輸入 輸出訪問時間基于所述分類而預測,并且其中所述運算時間基于存在于每個子查詢中的一 個或多個運算符而預測;以及 由所述處理器基于所述輸入輸出訪問時間、所述運算時間和網絡時間預測要在所述成 品數(shù)據(jù)庫中執(zhí)行的所述查詢的所述消逝響應時間,其中所述網絡時間表示通過網絡發(fā)送在 執(zhí)行每個子查詢時檢索的數(shù)據(jù)所需要的時間。2. 根據(jù)權利要求1所述的方法,其中所述統(tǒng)計信息包括表、塊、索引塊和數(shù)據(jù)值。3. 根據(jù)權利要求1所述的方法,其中所述運算參數(shù)包括表、訪問模式、基數(shù)、輸出大小、 成本,和輸入輸出成本。4. 根據(jù)權利要求1所述的方法,其中所述一個或多個運算符包括合計、哈希、嵌套、排 序、合并及哈希。5. 根據(jù)權利要求1所述的方法,所述掃描類型包括全表掃描、主索引掃描、快速索引掃 描和非唯一索引掃描。6. 根據(jù)權利要求1所述的方法,其還包括限定用于在生產環(huán)境中執(zhí)行的所述查詢的性 能基準值,其中所述性能基準值基于所述消逝響應時間、所述預測的子查詢執(zhí)行時間、輸入 輸出成本、邏輯讀取、物理讀取、基數(shù)和輸出大小而限定。7. 根據(jù)權利要求1所述的方法,其中所述消逝響應時間通過以下步驟而預測: 合計對應于每個子查詢的所述輸入輸出訪問時間和對應于每個子查詢的所述運算時 間以確定預測的子查詢執(zhí)行時間;以及 合計所述預測的子查詢執(zhí)行時間和所述網絡時間以確定所述消逝響應時間。8. -種用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT)的系統(tǒng),所述系 統(tǒng)包括: 處理器;和 存儲器,耦接到所述處理器,其中所述處理器執(zhí)行存儲在所述存儲器中的多個模塊,并 且其中所述多個模塊包括: db模擬器模塊,用于基于通過從開發(fā)環(huán)境外推統(tǒng)計信息導出的空模式在所述開發(fā)環(huán)境 中創(chuàng)建對應于成品數(shù)據(jù)庫的模擬數(shù)據(jù)庫; 執(zhí)行計劃生成模塊,用于基于所述模擬數(shù)據(jù)庫生成所述查詢的查詢執(zhí)行計劃,其中所 述查詢執(zhí)行計劃表示要在成品數(shù)據(jù)庫中執(zhí)行的所述查詢的一個或多個子查詢,并且其中每 個子查詢與運算參數(shù)相關聯(lián); 查詢分類模塊,用于基于所述運算參數(shù)將每個子查詢分類為至少一種類型的掃描; 時間確定模塊,用于在存在于所述開發(fā)環(huán)境中的測試數(shù)據(jù)庫上執(zhí)行每個子查詢以確定 對應于每個子查詢的輸入輸出(10)訪問時間和對應于每個子查詢的運算時間,其中所述 輸入輸出訪問時間基于所述分類而預測,并且其中所述運算時間基于存在于每個子查詢中 的一個或多個運算符而預測;以及 消逝響應時間預測模塊,用于基于所述輸入輸出訪問時間、所述運算時間和網絡時間 預測要在所述成品數(shù)據(jù)庫中執(zhí)行的所述查詢的所述消逝響應時間,其中所述網絡時間表示 通過網絡發(fā)送在執(zhí)行每個子查詢時檢索的數(shù)據(jù)所需要的時間。9. 根據(jù)權利要求8所述的系統(tǒng),其中所述消逝響應時間預測模塊通過以下各步驟而預 測所述消逝響應時間: 合計對應于每個子查詢的所述輸入輸出訪問時間和對應于每個子查詢的所述運算時 間以確定預測的子查詢執(zhí)行時間;以及 合計所述預測的子查詢執(zhí)行時間和所述網絡時間以確定所述消逝響應時間。10. 根據(jù)權利要求8所述的系統(tǒng),還包括基準代理模塊,用于限定用于在生產環(huán)境中要 被執(zhí)行的所述查詢的性能基準值,其中所述性能基準值基于所述消逝響應時間、所述預測 的子查詢執(zhí)行時間、輸入輸出成本、邏輯讀取、物理讀取、基數(shù)和輸出大小而限定。11. 一種包含可在用于預測要在成品數(shù)據(jù)庫中執(zhí)行的查詢的消逝響應時間(ERT)的計 算裝置中執(zhí)行的程序的非臨時性計算機可讀介質,所述程序包括程序代碼: 程序代碼,用于基于通過從開發(fā)環(huán)境外推統(tǒng)計信息導出的空模式在所述開發(fā)環(huán)境中創(chuàng) 建對應于成品數(shù)據(jù)庫的模擬數(shù)據(jù)庫; 程序代碼,用于基于所述模擬數(shù)據(jù)庫生成所述查詢的查詢執(zhí)行計劃,其中所述查詢執(zhí) 行計劃表示要在所述成品數(shù)據(jù)庫中執(zhí)行的所述查詢的一個或多個子查詢,并且其中每個子 查詢與運算參數(shù)相關聯(lián); 程序代碼,用于基于所述運算參數(shù)將每個子查詢分類為至少一種類型的掃描; 程序代碼,用于在存在于所述開發(fā)環(huán)境中的測試數(shù)據(jù)庫上執(zhí)行每個子查詢以確定對應 于每個子查詢的輸入輸出(10)訪問時間和對應于每個子查詢的運算時間,其中所述輸入 輸出訪問時間基于所述分類而預測,并且其中所述運算時間基于存在于每個子查詢中的一 個或多個運算符而預測;以及 程序代碼,用于基于所述輸入輸出訪問時間、所述運算時間和網絡時間預測要在所述 成品數(shù)據(jù)庫中執(zhí)行的所述查詢的所述消逝響應時間,其中所述網絡時間表示通過網絡發(fā)送 在執(zhí)行每個子查詢時檢索的數(shù)據(jù)所需要的時間。
【文檔編號】G06F17/30GK106033469SQ201510125047
【公開日】2016年10月19日
【申請日】2015年3月20日
【發(fā)明人】列哈·辛哈爾
【申請人】塔塔顧問服務有限公司