專利名稱:數據庫查詢的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明一般涉及數據庫管理系統(tǒng),更具體地,涉及一種數據庫查詢的方法和系統(tǒng)。
背景技術:
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。關系數據庫是目前常用的數據庫類型,對關系型數據庫中的數據,目前使用結構化查詢語言(SQL)進行查詢。SQL語言的功能包括查詢、操縱、定義和控制,是一個綜合的、通用的關系數據庫語言,同時又是一種高度非過程化的語言,只要求用戶指出做什么而不需要指出怎么做。SQL集成實現了數據庫生命周期中的全部操作。SQL提供了與關系數據庫進行交互的方法,它可以與標準的編程語言一起工作。 數據庫管理系統(tǒng)(database management system)是一種操縱和管理數據庫的大型軟件,用于建立、使用和維護數據庫,簡稱DBMS。它對數據庫進行統(tǒng)一的管理和控制,以保證數據庫的安全性和完整性。現有的關系型數據庫管理系統(tǒng)包括IBM的DB2、Oracle、Informix、Sybase、SQL Server 等。數據庫管理系統(tǒng)的查詢引擎(Query ExecutionRuntime)都支持SQL語言的查詢功能。用戶或者應用程序可以使用SQL語言,通過數據庫管理系統(tǒng)的查詢引擎對其管理的數據庫進行查詢。查詢的結果一般包含多個記錄,一般稱返回第一條滿足查詢條件數據的時間為查詢響應時間(response time),而返回所有滿足查詢條件的數據結果集的時間稱為查詢總時間(total time)。目前的數據庫管理系統(tǒng)接收到查詢請求時,會默認盡可能使用最小查詢總時間運行查詢,數據庫管理系統(tǒng)會產生一個查詢訪問計劃,該計劃能夠以最有效的方式返回給用戶或者發(fā)出查詢的應用程序完整的查詢結果。有時,發(fā)出查詢的應用程序或用戶傾向于盡快得到開始的幾個查詢結果,而不關注完成整個查詢所經過的時間,這種應用可以使用語句“OPTIMIZED FOR FIRST N ROW”來通知數據庫管理系統(tǒng)的查詢引擎優(yōu)化器以最小查詢響應時間而不是最小查詢總時間來執(zhí)行查詢。然而,許多應用需要同時以最小查詢響應時間和最小查詢總時間來執(zhí)行查詢。當一個發(fā)出查詢的應用發(fā)出查詢請求,它需要盡快從數據庫中得到響應,然后得到初始的幾個查詢結果,以便可以判斷是否進行后續(xù)的查詢或者其它商業(yè)邏輯。當前的數據庫管理系統(tǒng)只能或者提供以最小查詢響應時間的查詢計劃,或者提供以最小查詢總時間的查詢計劃,這些查詢計劃都沒有辦法能同時減少查詢響應時間和查詢總時間。
發(fā)明內容
因此,需要一種新的數據庫查詢方法,該方法使得用戶或應用程序在查詢數據庫時,能夠同時以最小查詢響應時間和最小查詢執(zhí)行時間來執(zhí)行該查詢,從而滿足用戶或應用程序的數據庫查詢要求。根據本發(fā)明的一個方面,提供了一種數據庫查詢的方法,包括響應于查詢請求,獲得該查詢請求的以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃;開始執(zhí)行以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃;在以最小查詢總時間為目標的查詢計劃 執(zhí)行到指定點之前,輸出以最小查詢響應時間為目標的查詢計劃執(zhí)行得到的初始查詢結果;響應于以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點,繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃以輸出剩余查詢結果。根據本發(fā)明的另一個方面,提供了一種數據庫查詢的系統(tǒng),包括獲得裝置,被配置為響應于查詢請求,獲得該查詢請求的以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃;執(zhí)行裝置,被配置為執(zhí)行以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃;控制裝置,被配置為檢測以最小查詢總時間為目標的查詢計劃是否執(zhí)行到指定占.輸出裝置,被配置為輸出查詢結果;其中,在所述控制裝置檢測到以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點之前,所述輸出裝置輸出以最小查詢響應時間為目標的查詢計劃執(zhí)行得到的初始查詢結果;響應于所述控制裝置檢測到以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點,所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃以使所述輸出裝置輸出剩余查詢結果。
通過對附圖中本發(fā)明示例實施例方式的更詳細描述,本發(fā)明的上述、以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,相同的參考標號通常代表本發(fā)明示例實施例方式中的相同部件。圖I示出了適于用來實現本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖;圖2示出一個示例性的查詢請求及其對應的兩張表;圖3示出了哈希連接的工作方式;圖4示出了本發(fā)明提出的新的數據庫查詢方法的方法步驟;以及圖5示出了本發(fā)明提出的數據庫查詢的系統(tǒng)的結構框圖。
具體實施例方式將參照附圖更加詳細地描述本發(fā)明的優(yōu)選實施方式,在附圖中顯示了本發(fā)明的優(yōu)選實施例。然而,本發(fā)明可以以各種形式實現而不應該理解為被這里闡述的實施例所限制。相反,提供這些實施例是為了使本發(fā)明更加透徹和完整,并且,完全將本發(fā)明的范圍傳達給本領域的技術人員。圖I示出了適于用來實現本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖。如所示,計算機系統(tǒng)100可以包括CPU(中央處理單元)101、RAM(隨機存取存儲器)102、R0M(只讀存儲器)103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設備112、并行外部設備113和顯示器114。在這些設備中,與系統(tǒng)總線104耦合的有CPU 10URAM 102, ROM 103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設備112與串行接口控制器107耦合,并行外部設備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應當理解,圖I所述的結構框圖僅僅為了示例的目的而示出的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據具體情況而增加或者減少某些設備。在數據庫的應用中,數據一般存在于多個相關聯的表中,基本上沒有數據只存在于一張表的情況。小的應用系統(tǒng)的數據集有十幾張表,大型系統(tǒng)數據集有上千張表。因此,用戶和數據庫應用程序經常要做的就是在多個表的大數據集中進行數據查詢。也就是使用數據庫多表關聯查詢,多表關聯查詢一般使用表連接技術,這種查詢最為耗時。因此,一般來說,只有這種多表關聯查詢才會有同時以最小查詢響應時間和最小查詢總時間來執(zhí)行該查詢的必要性,單張表的查詢一般來說響應是非常快的,如果用戶或應用程序有上述要求,使用最小查詢總時間來運行查詢即可。
·
以查詢的連接操作是對數據庫中的兩個表進行的操作為例,多表的關聯操作可以認為是若干組兩張表關聯的組合,圖2示出一個示例性的查詢請求及其對應的兩張表,以下的敘述中,以此為實例,講述本發(fā)明的方法及各種實現方式。查詢的連接操作也可以是對數據庫中的多個查詢中間結果集、或表與查詢中間結果集進行的操作,因此,本領域技術人員可以知道,表Tl和表T2之一或全部也可以是查詢結果的中間集。圖2中,包含了兩張表,其共同的列為 Product_id,查詢語句為Select * from Tl, T2where Tl. Product_id =T2. Product_id0多表關聯查詢一般使用的表連接技術包括嵌套循環(huán)連接(nested loop join)、哈希連接(hash join)以及排序合并連接(merge join)等。嵌套循環(huán)連接的工作方式是這樣的首先選擇一張表作為連接的驅動表,例如圖2的表Tl,然后提取驅動表Tl中符合條件的記錄,與被驅動表,例如圖2的表T2的連接列進行關聯查詢,得到符合條件的記錄。在這個過程中,首先提取驅動表Tl中符合條件的第一條記錄,再與被驅動表T2的連接列進行關聯查詢,得到相應的記錄行。在關聯查詢的過程中,會持續(xù)提取驅動表Tl中其它符合條件的記錄與被驅動表T2關聯查詢,不需要等到全部流程結束再返回結果集,而是不斷地將查詢出來的結果集返回。在這種情況下,終端用戶將會快速地得到返回的首批記錄。因此嵌套循環(huán)連接返回前幾條記錄的速度是非??斓?。嵌套循環(huán)連接適用于查詢的選擇性強、約束性高并且僅返回小部分記錄的結果集。圖3示出了哈希連接的工作方式,根據圖3,哈希連接的工作方式分為兩個階段首先是構建階段查詢引擎優(yōu)化器首先選擇一張表,例如圖2的表T2,運用哈希函數對表T2的連接列(即表T2中的Productjd列),進行計算產生一張哈希表;然后是探測階段查詢引擎優(yōu)化器對另外一張表(例如圖2的表Tl)的每條記錄的連接列(即表Tl中的ProdUCt_id列)運用同樣的哈希函數計算得到哈希值并在生成的哈希表中查找是否存在匹配的哈希值。對于數據量比較大的表T2,哈希連接的構建階段需要花費比較長的時間進行哈希表的初始化;而對于分布式數據庫環(huán)境下,若數據還需要從遠端提取,該構造時間還將進一步延長。因此,哈希連接存在較長的查詢響應時間。但是,一旦哈希表建立完畢,能夠快速獲得全部的查詢結果集,因此,哈希連接比較適用于要求查詢總時間小并且返回大數據量結果集的查詢。排序合并連接的方法比較簡單。排序合并連接的工作方式也分為兩個階段,類似于哈希連接首先是構建階段查詢引擎優(yōu)化器對兩張表中大的表按照連接列進行排序,即圖2的表T2按照PiOductjd列進行排序,排序需要較長的時間;然后是運行階段首先對兩張表中另外一張表,即圖2的表Tl,也按照Product id列進行排序,由于該表較小,排序時間短,查詢引擎優(yōu)化器對兩張排序后的表直接進行合并連接,提取符合條件的記錄,就可以得到查詢結果。一旦排序結束,能夠快速獲得全部查詢結果,因此,相比嵌套循環(huán)連接,排序合并連接比較適用于要求查詢總時間小并且返回大數據量結果的查詢?,F有技術中,對于大數據集的連接查詢,數據庫管理系統(tǒng)的查詢引擎優(yōu)化器通常為了得到更好的查詢總時間,通常會選擇哈希連接或者排序合并連接。在強制數據庫管理系統(tǒng)的查詢引擎優(yōu)化器得到更好查詢響應時間時,查詢引擎優(yōu)化器會選擇嵌套循環(huán)連接。 以下表I比較了這三種連接方式,由表I可見,不同的連接類型具有不同的優(yōu)勢,根據這樣的優(yōu)勢,可以將連接類型分為兩類,一類是查詢總時間最小的連接,一類是查詢響應時間最小的連接。相應地,查詢引擎優(yōu)化器可以輸出以查詢總時間最小的連接建立的查詢總時間最小的查詢計劃和以查詢響應時間最小的連接建立的查詢總時間最小的查詢計劃。表I三種連接方式的比較
權利要求
1.一種數據庫查詢的方法,包括 響應于查詢請求,獲得該查詢請求的以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃; 開始執(zhí)行以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃; 在以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點之前,輸出以最小查詢響應時間為目標的查詢計劃執(zhí)行得到的初始查詢結果; 響應于以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點,繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃以輸出剩余查詢結果。
2.根據權利要求I所述的方法,其中以最小查詢響應時間為目標的查詢計劃是使用嵌套循環(huán)連接的查詢計劃,以最小查詢總時間為目標的查詢計劃是使用哈希連接的查詢計劃,所述指定點是哈希連接的構建階段結束的點。
3.根據權利要求2所述的方法,其中所述繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃包括 從使用嵌套循環(huán)連接的查詢計劃的驅動表中的第一個未執(zhí)行嵌套循環(huán)連接查詢計劃的記錄開始,執(zhí)行使用哈希連接的查詢計劃的探測階段的操作。
4.根據權利要求I所述的方法,其中以最小查詢響應時間為目標的查詢計劃是使用嵌套循環(huán)連接的查詢計劃,以最小查詢總時間為目標的查詢計劃是使用排序合并連接的查詢計劃,所述指定點是排序合并連接的構建階段結束的點。
5.根據權利要求4所述的方法,其中,所述在排序合并連接的構建階段中對使用嵌套循環(huán)連接的查詢計劃的驅動表之外的另外一張表按照連接列進行排序,得到另外一張表的排序表;并且其中所述繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃包括對使用嵌套循環(huán)連接的查詢計劃的驅動表中的已經執(zhí)行過嵌套循環(huán)連接查詢計劃的記錄,不再執(zhí)行使用排序合并連接的查詢計劃的執(zhí)行階段的操作。
6.根據權利要求5所述的方法,其中對使用嵌套循環(huán)連接的查詢計劃的驅動表中的已經執(zhí)行過嵌套循環(huán)連接查詢計劃的記錄,不再執(zhí)行使用排序合并連接的查詢計劃的執(zhí)行階段的操作包括 對所述驅動表去除已經執(zhí)行過嵌套循環(huán)連接查詢計劃的記錄后,按照連接列進行排序,得到剩余驅動表的排序表; 對剩余驅動表的排序表和另外一張表的排序表進行合并連接操作,得到所述剩余查詢結果。
7.根據權利要求2或4所述的方法,其中所述繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃,輸出剩余查詢結果包括 存儲所述初始查詢結果; 存儲以最小查詢總時間為目標的查詢計劃的全部查詢結果; 將全部查詢結果中去除初始查詢結果,得到剩余查詢結果。
8.根據權利要求I所述的方法,其中所述查詢請求是對數據庫中的以下至少一個進行的 多個表;多個查詢中間結果集; 表與查詢中間結果集。
9.根據權利要求I所述的方法,其中在獲得該查詢請求的以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃之前還包括 利用數據庫查詢引擎優(yōu)化器的代價模型評估以最小查詢總時間為目標的查詢計劃使用哈希連接的查詢計劃以及使用排序合并連接的查詢計劃; 選擇上述二者中代價小的查詢計劃作為以最小查詢總時間為目標的查詢計劃。
10.一種數據庫查詢的系統(tǒng),包括 獲得裝置,被配置為響應于查詢請求,獲得該查詢請求的以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃; 執(zhí)行裝置,被配置為執(zhí)行以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃; 控制裝置,被配置為檢測以最小查詢總時間為目標的查詢計劃是否執(zhí)行到指定點; 輸出裝置,被配置為輸出查詢結果; 其中,在所述控制裝置檢測到以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點之前,所述輸出裝置輸出以最小查詢響應時間為目標的查詢計劃執(zhí)行得到的初始查詢結果;響應于所述控制裝置檢測到以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點,所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃以使所述輸出裝置輸出剩余查詢結果。
11.根據權利要求10所述的系統(tǒng),其中以最小查詢響應時間為目標的查詢計劃是使用嵌套循環(huán)連接的查詢計劃,以最小查詢總時間為目標的查詢計劃是使用哈希連接的查詢計劃,所述指定點是哈希連接的構建階段結束的點。
12.根據權利要求11所述的系統(tǒng),其中所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃包括 執(zhí)行裝置從使用嵌套循環(huán)連接的查詢計劃的驅動表中的第一個未執(zhí)行嵌套循環(huán)連接查詢計劃的記錄開始,執(zhí)行使用哈希連接的查詢計劃的探測階段的操作。
13.根據權利要求10所述的系統(tǒng),其中以最小查詢響應時間為目標的查詢計劃是使用嵌套循環(huán)連接的查詢計劃,以最小查詢總時間為目標的查詢計劃是使用排序合并連接的查詢計劃,所述指定點是排序合并連接的構建階段結束的點。
14.根據權利要求13所述的系統(tǒng),其中在所述排序合并連接的構建階段中對使用嵌套循環(huán)連接的查詢計劃的驅動表之外的另外一張表按照連接列進行排序,得到另外一張表的排序表;并且其中所述執(zhí)行裝置繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃包括 執(zhí)行裝置對使用嵌套循環(huán)連接的查詢計劃的驅動表中的已經執(zhí)行過嵌套循環(huán)連接查詢計劃的記錄,不再執(zhí)行使用排序合并連接的查詢計劃的執(zhí)行階段的操作。
15.根據權利要求14所述的系統(tǒng),其中所述執(zhí)行裝置包括 去除裝置,被配置為對所述驅動表去除已經執(zhí)行過嵌套循環(huán)連接查詢計劃的記錄后,按照連接列進行排序,得到剩余驅動表的排序表; 合并連接裝置,被配置為對剩余驅動表的排序表和另外一張表的排序表進行合并連接操作,得到所述剩余查詢結果。
16.根據權利要求11或13所述的系統(tǒng),其中所述執(zhí)行裝置還包括初始查詢結果存儲裝置,被配置為存儲所述初始查詢結果; 全部查詢結果存儲裝置,被配置為存儲以最小查詢總時間為目標的查詢計劃的全部查詢結果; 剩余查詢結果獲得裝置,被配置為將全部查詢結果中去除初始查詢結果,得到剩余查詢結果。
17.根據權利要求10所述的系統(tǒng),其中所述查詢請求是對數據庫中的以下至少一個進行的 多個表; 多個查詢中間結果集; 表與查詢中間結果集。
18.根據權利要求10所述的系統(tǒng),其中還包括 評估裝置,被配置為利用數據庫查詢引擎優(yōu)化器的代價模型評估以最小查詢總時間為目標的查詢計劃使用哈希連接的查詢計劃以及使用排序合并連接的查詢計劃; 選擇裝置,被配置為選擇上述二者中代價小的查詢計劃作為以最小查詢總時間為目標的查詢計劃。
全文摘要
本發(fā)明公開了一種數據庫查詢的方法和系統(tǒng),該方法包括響應于查詢請求,獲得該查詢請求的以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃;開始執(zhí)行以最小查詢響應時間為目標的查詢計劃以及以最小查詢總時間為目標的查詢計劃;在以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點之前,輸出以最小查詢響應時間為目標的查詢計劃執(zhí)行得到的初始查詢結果;響應于以最小查詢總時間為目標的查詢計劃執(zhí)行到指定點,繼續(xù)執(zhí)行以最小查詢總時間為目標的查詢計劃以輸出剩余查詢結果。該查詢方法和系統(tǒng)能同時減少查詢響應時間和查詢總時間。
文檔編號G06F17/30GK102968420SQ201110270208
公開日2013年3月13日 申請日期2011年8月31日 優(yōu)先權日2011年8月31日
發(fā)明者張廣舟, 雷尚順, 趙勝, 孫云峰, 陳奇 申請人:國際商業(yè)機器公司