一種查詢處理方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其涉及一種查詢處理方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]目前,數(shù)據(jù)庫(kù)在提供查詢時(shí),一般通過(guò)單一的查詢引擎入口處理用戶的查詢請(qǐng)求。數(shù)據(jù)庫(kù)將資源劃分為多個(gè)隊(duì)列,每個(gè)隊(duì)列被分配了一定比例的計(jì)算或存儲(chǔ)資源。當(dāng)數(shù)據(jù)庫(kù)接收查詢請(qǐng)求時(shí),根據(jù)查詢請(qǐng)求的查詢類型,將該查詢請(qǐng)求提交到該查詢請(qǐng)求的查詢類型對(duì)應(yīng)的資源隊(duì)列中,由查詢引擎使用該資源隊(duì)列的資源對(duì)該查詢請(qǐng)求進(jìn)行處理,例如,可以根據(jù)執(zhí)行查詢的時(shí)間將資源隊(duì)列進(jìn)行劃分:執(zhí)行時(shí)間短暫的交互類查詢或者交易類操作被指定使用第一個(gè)資源隊(duì)列中的資源執(zhí)行查詢;執(zhí)行時(shí)間較長(zhǎng),資源占用較多的復(fù)雜批處理任務(wù)被指定使用第二個(gè)資源隊(duì)列中的資源執(zhí)行查詢;剩余的其他任務(wù)被指定使用第三個(gè)資源隊(duì)列中的資源執(zhí)行查詢。
[0003]上述現(xiàn)有的在數(shù)據(jù)庫(kù)中對(duì)查詢請(qǐng)求進(jìn)行處理的方法,由于采用固定的查詢規(guī)則對(duì)處理查詢請(qǐng)求的資源進(jìn)行資源調(diào)度,當(dāng)某一類查詢請(qǐng)求需要的資源較多時(shí),可能由于對(duì)該類查詢進(jìn)行處理的資源隊(duì)列的資源不足,無(wú)法對(duì)該查詢請(qǐng)求進(jìn)行高效處理,導(dǎo)致對(duì)該類查詢的處理效率低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種查詢處理方法、裝置及系統(tǒng),用以解決現(xiàn)有技術(shù)中存在的在數(shù)據(jù)庫(kù)中對(duì)查詢進(jìn)行處理的效率低的問(wèn)題。
[0005]本發(fā)明實(shí)施例提供一種查詢處理方法,包括:
[0006]查詢路由器將待處理的查詢請(qǐng)求發(fā)送給多個(gè)查詢引擎;
[0007]接收每個(gè)所述查詢引擎發(fā)送的對(duì)所述查詢請(qǐng)求進(jìn)行處理的預(yù)判響應(yīng)時(shí)間,所述預(yù)判響應(yīng)時(shí)間為查詢引擎根據(jù)自身對(duì)應(yīng)的存儲(chǔ)引擎中存儲(chǔ)的數(shù)據(jù)表的屬性信息,預(yù)判的通過(guò)掃描所述數(shù)據(jù)表對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的時(shí)間;
[0008]向預(yù)判響應(yīng)時(shí)間最小的查詢引擎發(fā)送對(duì)所述查詢請(qǐng)求的處理指令。
[0009]采用本發(fā)明實(shí)施例提供的方法,由于采用數(shù)據(jù)庫(kù)中多個(gè)查詢引擎中執(zhí)行查詢請(qǐng)求的預(yù)判響應(yīng)時(shí)間最小的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,可以動(dòng)態(tài)的為查詢請(qǐng)求分配查詢引擎,采用所分配的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,不需要使用查詢引擎中固定的資源隊(duì)列中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,提高了對(duì)查詢的處理效率。
[0010]進(jìn)一步的,將待處理的查詢請(qǐng)求發(fā)送給多個(gè)查詢引擎,具體為:
[0011]通過(guò)待處理的查詢請(qǐng)求的查詢類型與每個(gè)查詢引擎可處理查詢的類型進(jìn)行比對(duì),將所述查詢請(qǐng)求發(fā)送給可處理該查詢請(qǐng)求的多個(gè)查詢引擎。
[0012]進(jìn)一步的,將待處理的查詢請(qǐng)求發(fā)送給多個(gè)查詢引擎,具體為:
[0013]將根據(jù)預(yù)設(shè)查詢請(qǐng)求優(yōu)先策略確定的優(yōu)先級(jí)最高的待處理查詢請(qǐng)求發(fā)送給多個(gè)查詢引擎。
[0014]進(jìn)一步的,上述方法,還包括:
[0015]在向預(yù)判響應(yīng)時(shí)間最小的查詢引擎發(fā)送對(duì)所述查詢請(qǐng)求的處理指令之后,記錄所述查詢請(qǐng)求與處理該查詢請(qǐng)求的查詢引擎的對(duì)應(yīng)關(guān)系。
[0016]進(jìn)一步的,上述方法,還包括:
[0017]在向預(yù)判響應(yīng)時(shí)間最小的查詢引擎發(fā)送對(duì)所述查詢請(qǐng)求的處理指令之后,當(dāng)接收到該查詢引擎發(fā)送的表征該查詢引擎處理所述查詢請(qǐng)求的資源不足的消息時(shí),按照預(yù)判響應(yīng)時(shí)間從小到大的順序,從所述多個(gè)查詢引擎中除該查詢引擎之外的查詢引擎中,向預(yù)判響應(yīng)時(shí)間最小的查詢引擎發(fā)送對(duì)所述查詢請(qǐng)求的處理指令。
[0018]本發(fā)明實(shí)施例提供一種查詢處理方法,包括:
[0019]查詢引擎接收查詢路由器發(fā)送的查詢請(qǐng)求;
[0020]根據(jù)自身對(duì)應(yīng)的存儲(chǔ)引擎中存儲(chǔ)的數(shù)據(jù)表的屬性信息,預(yù)判通過(guò)掃描所述數(shù)據(jù)表對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的時(shí)間,作為自身對(duì)所述查詢請(qǐng)求進(jìn)行處理的預(yù)判響應(yīng)時(shí)間;
[0021]將所述預(yù)判響應(yīng)時(shí)間發(fā)送給所述查詢路由器;
[0022]當(dāng)接收到所述查詢路由器發(fā)送的對(duì)所述查詢請(qǐng)求的處理指令時(shí),采用自身的資源對(duì)所述查詢請(qǐng)求進(jìn)行處理。
[0023]采用本發(fā)明實(shí)施例提供的方法,由于采用數(shù)據(jù)庫(kù)中多個(gè)查詢引擎中執(zhí)行查詢請(qǐng)求的預(yù)判響應(yīng)時(shí)間最小的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,可以動(dòng)態(tài)的為查詢請(qǐng)求分配查詢引擎,采用所分配的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,不需要使用查詢引擎中固定的資源隊(duì)列中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,提高了對(duì)查詢的處理效率。
[0024]進(jìn)一步的,當(dāng)接收到所述查詢路由器發(fā)送的對(duì)所述查詢請(qǐng)求的處理指令時(shí),采用自身的資源對(duì)所述查詢請(qǐng)求進(jìn)行處理,具體包括:
[0025]當(dāng)接收到所述查詢路由器發(fā)送的對(duì)所述查詢請(qǐng)求的處理指令時(shí),根據(jù)與自身對(duì)應(yīng)的存儲(chǔ)引擎中存儲(chǔ)的數(shù)據(jù)表的屬性信息,確定通過(guò)掃描所述數(shù)據(jù)表對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的資源;
[0026]當(dāng)確定自身的空閑資源不小于對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的資源時(shí),采用自身的空閑資源對(duì)所述查詢請(qǐng)求進(jìn)行處理。
[0027]進(jìn)一步的,采用自身的空閑資源對(duì)所述查詢請(qǐng)求進(jìn)行處理,具體包括:
[0028]在自身的多個(gè)資源隊(duì)列中,根據(jù)預(yù)設(shè)資源隊(duì)列選擇策略選擇一個(gè)資源隊(duì)列對(duì)所述查詢請(qǐng)求進(jìn)行處理。
[0029]進(jìn)一步的,上述方法,還包括:
[0030]當(dāng)確定自身的空閑資源小于對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的資源時(shí),向所述查詢路由器發(fā)送表征自身處理所述查詢請(qǐng)求的資源不足的消息。
[0031]本發(fā)明實(shí)施例還提供了一種查詢處理裝置,包括:
[0032]查詢請(qǐng)求發(fā)送單元,用于將待處理的查詢請(qǐng)求發(fā)送給多個(gè)查詢引擎;
[0033]接收單元,用于接收每個(gè)所述查詢引擎發(fā)送的對(duì)所述查詢請(qǐng)求進(jìn)行處理的預(yù)判響應(yīng)時(shí)間,所述預(yù)判響應(yīng)時(shí)間為查詢引擎根據(jù)自身對(duì)應(yīng)的存儲(chǔ)引擎中存儲(chǔ)的數(shù)據(jù)表的屬性信息,預(yù)判的通過(guò)掃描所述數(shù)據(jù)表對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的時(shí)間;
[0034]第一處理指令發(fā)送單元,用于向預(yù)判響應(yīng)時(shí)間最小的查詢引擎發(fā)送對(duì)所述查詢請(qǐng)求的處理指令。
[0035]采用本發(fā)明實(shí)施例提供的裝置,由于采用數(shù)據(jù)庫(kù)中多個(gè)查詢引擎中執(zhí)行查詢請(qǐng)求的預(yù)判響應(yīng)時(shí)間最小的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,可以動(dòng)態(tài)的為查詢請(qǐng)求分配查詢引擎,采用所分配的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,不需要使用查詢引擎中固定的資源隊(duì)列中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,提高了對(duì)查詢的處理效率。
[0036]進(jìn)一步的,所述查詢請(qǐng)求發(fā)送單元,具體用于通過(guò)待處理的查詢請(qǐng)求的查詢類型與每個(gè)查詢引擎可處理查詢的類型進(jìn)行比對(duì),將所述查詢請(qǐng)求發(fā)送給可處理該查詢請(qǐng)求的多個(gè)查詢引擎。
[0037]進(jìn)一步的,所述查詢請(qǐng)求發(fā)送單元,具體用于將根據(jù)預(yù)設(shè)查詢請(qǐng)求優(yōu)先策略確定的優(yōu)先級(jí)最高的待處理查詢請(qǐng)求發(fā)送給多個(gè)查詢引擎。
[0038]進(jìn)一步的,上述裝置,還包括:
[0039]記錄單元,用于在向預(yù)判響應(yīng)時(shí)間最小的查詢引擎發(fā)送對(duì)所述查詢請(qǐng)求的處理指令之后,記錄所述查詢請(qǐng)求與處理該查詢請(qǐng)求的查詢引擎的對(duì)應(yīng)關(guān)系。
[0040]進(jìn)一步的,上述裝置,還包括:
[0041 ] 第二處理指令發(fā)送單元,用于當(dāng)接收到該查詢引擎發(fā)送的表征該查詢引擎處理所述查詢請(qǐng)求的資源不足的消息時(shí),按照預(yù)判響應(yīng)時(shí)間從小到大的順序,從所述多個(gè)查詢引擎中除該查詢引擎之外的查詢引擎中,向預(yù)判響應(yīng)時(shí)間最小的查詢引擎發(fā)送對(duì)所述查詢請(qǐng)求的處理指令。
[0042]本發(fā)明實(shí)施例還提供了一種查詢處理裝置,包括:
[0043]接收單元,用于接收查詢路由器發(fā)送的查詢請(qǐng)求;
[0044]響應(yīng)時(shí)間預(yù)判單元,用于根據(jù)自身對(duì)應(yīng)的存儲(chǔ)引擎中存儲(chǔ)的數(shù)據(jù)表的屬性信息,預(yù)判通過(guò)掃描所述數(shù)據(jù)表對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的時(shí)間,作為自身對(duì)所述查詢請(qǐng)求進(jìn)行處理的預(yù)判響應(yīng)時(shí)間;
[0045]第一發(fā)送單元,用于將所述預(yù)判響應(yīng)時(shí)間發(fā)送給所述查詢路由器;
[0046]處理單元,用于當(dāng)接收到所述查詢路由器發(fā)送的對(duì)所述查詢請(qǐng)求的處理指令時(shí),采用自身的資源對(duì)所述查詢請(qǐng)求進(jìn)行處理。
[0047]采用本發(fā)明實(shí)施例提供的裝置,由于采用數(shù)據(jù)庫(kù)中多個(gè)查詢引擎中執(zhí)行查詢請(qǐng)求的預(yù)判響應(yīng)時(shí)間最小的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,可以動(dòng)態(tài)的為查詢請(qǐng)求分配查詢引擎,采用所分配的查詢引擎中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,不需要使用查詢引擎中固定的資源隊(duì)列中的資源對(duì)查詢請(qǐng)求進(jìn)行處理,提高了對(duì)查詢的處理效率。
[0048]進(jìn)一步的,所述處理單元,具體用于當(dāng)接收到所述查詢路由器發(fā)送的對(duì)所述查詢請(qǐng)求的處理指令時(shí),根據(jù)與自身對(duì)應(yīng)的存儲(chǔ)引擎中存儲(chǔ)的數(shù)據(jù)表的屬性信息,確定通過(guò)掃描所述數(shù)據(jù)表對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的資源;當(dāng)確定自身的空閑資源不小于對(duì)所述查詢請(qǐng)求進(jìn)行處理所需的資源時(shí),采用自身的空閑資源對(duì)所述查詢請(qǐng)求進(jìn)行處理。
[0049]進(jìn)一步的,所述處理單元,具體用于在自身的多個(gè)資源隊(duì)列中,根據(jù)預(yù)設(shè)資源隊(duì)列選擇策略選擇一個(gè)資源隊(duì)列對(duì)所述查詢請(qǐng)求進(jìn)行處理。
[0050]進(jìn)一步的,上述裝置,還包括:
[0051]第二發(fā)送單元,用于當(dāng)確定自身的空閑資源小于對(duì)所述查詢請(qǐng)求進(jìn)行