數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法和裝置。其中,該執(zhí)行方法包括:獲取待執(zhí)行的第一查詢?nèi)蝿?wù),其中,第一查詢?nèi)蝿?wù)中攜帶有執(zhí)行第一查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識;將第一查詢?nèi)蝿?wù)保存入標(biāo)識所指向的隊(duì)列;獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第一查詢?nèi)蝿?wù);按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)。通過本發(fā)明,解決了現(xiàn)有技術(shù)中同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢時(shí),多個(gè)耗時(shí)查詢對數(shù)據(jù)庫資源搶占的問題,實(shí)現(xiàn)了同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢操作時(shí)串行化執(zhí)行各個(gè)查詢操作的效果。
【專利說明】數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法和
目.0
【背景技術(shù)】
[0002]在多個(gè)應(yīng)用程序同時(shí)對一個(gè)數(shù)據(jù)庫進(jìn)行查詢操作時(shí),如果查詢操作占用的資源(如:CPU計(jì)算、1讀寫等)比較大,則會發(fā)生對資源的搶占,最終導(dǎo)致多個(gè)查詢操作需要很長時(shí)間才能完成(會超出所有查詢操作串行執(zhí)行需要的時(shí)間),甚至無法完成。
[0003]其中,1為Input/Output,即輸入/輸出。
[0004]在現(xiàn)有技術(shù)中,對于這種情況,一般采用的解決方式為優(yōu)化SQL查詢語句,以最大限度的發(fā)揮數(shù)據(jù)庫的性能,此解決方式只能滿足對于數(shù)據(jù)量較小的查詢操作的要求,對于需要統(tǒng)計(jì)查詢非常大的數(shù)據(jù)量(以億為單位的量級)的情況,現(xiàn)有的解決方式則不能很好的解決問題。
[0005]其中,SQL為Structured Query Language,即結(jié)構(gòu)化查詢語言,SQL是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。
[0006]現(xiàn)有技術(shù)只是對SQL查詢語句優(yōu)化,并沒有解決多個(gè)耗時(shí)查詢操作對資源搶占引起的查詢時(shí)間超長,甚至失敗的問題(由于數(shù)據(jù)庫量非常大,SQL查詢語句優(yōu)化后也需要執(zhí)行較長時(shí)間)。
[0007]針對現(xiàn)有技術(shù)中同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢操作時(shí),多個(gè)耗時(shí)查詢操作對數(shù)據(jù)庫資源搶占的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的主要目的在于提供一種數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法和裝置,以解決現(xiàn)有技術(shù)中同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢操作時(shí),多個(gè)耗時(shí)查詢操作對數(shù)據(jù)庫資源搶占的問題。
[0009]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法。
[0010]根據(jù)本發(fā)明的執(zhí)行方法包括:獲取待執(zhí)行的第一查詢?nèi)蝿?wù),其中,第一查詢?nèi)蝿?wù)中攜帶有執(zhí)行第一查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識;將第一查詢?nèi)蝿?wù)保存入標(biāo)識所指向的隊(duì)列;獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第一查詢?nèi)蝿?wù);按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)。
[0011]進(jìn)一步地,將第一查詢?nèi)蝿?wù)保存入標(biāo)識所指向的隊(duì)列包括:檢測是否存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列;若存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列,則將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾;若不存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列,則創(chuàng)建隊(duì)列,并將第一查詢?nèi)蝿?wù)保存至隊(duì)列。
[0012]進(jìn)一步地,將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾包括:檢測隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第二查詢?nèi)蝿?wù);若隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值,則將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾。
[0013]進(jìn)一步地,按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)包括:檢測隊(duì)列是否為空;若隊(duì)列不為空,則讀取當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)的任務(wù)編號對應(yīng)的第四查詢?nèi)蝿?wù),其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第三查詢?nèi)蝿?wù)和第四查詢?nèi)蝿?wù);執(zhí)行第四查詢?nèi)蝿?wù),并將第四查詢?nèi)蝿?wù)從隊(duì)列中移除。
[0014]進(jìn)一步地,在按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)之后,執(zhí)行方法還包括:獲取執(zhí)行保存的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù);將執(zhí)行結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集入口 ο
[0015]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行裝置。
[0016]根據(jù)本發(fā)明的執(zhí)行裝置包括:第一獲取模塊,用于獲取待執(zhí)行的第一查詢?nèi)蝿?wù),其中,第一查詢?nèi)蝿?wù)中攜帶有執(zhí)行第一查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識;第一保存模塊,用于將第一查詢?nèi)蝿?wù)保存入標(biāo)識所指向的隊(duì)列;第二獲取模塊,用于獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第一查詢?nèi)蝿?wù);執(zhí)行模塊,用于按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)。
[0017]進(jìn)一步地,第一保存模塊包括:第一檢測模塊,用于檢測是否存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列;添加模塊,用于在存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列的情況下,將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾;保存子模塊,用于在不存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列的情況下,創(chuàng)建隊(duì)列,并將第一查詢?nèi)蝿?wù)保存至隊(duì)列。
[0018]進(jìn)一步地,添加模塊包括:第二檢測模塊,用于檢測隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第二查詢?nèi)蝿?wù);添加子模塊,用于在隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值的情況下,將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾。
[0019]進(jìn)一步地,執(zhí)行模塊包括:第三檢測模塊,用于檢測隊(duì)列是否為空;讀取模塊,用于在隊(duì)列不為空的情況下,讀取當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)的任務(wù)編號對應(yīng)的第四查詢?nèi)蝿?wù),其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第三查詢?nèi)蝿?wù)和第四查詢?nèi)蝿?wù);執(zhí)行子模塊,用于執(zhí)行第四查詢?nèi)蝿?wù),并將第四查詢?nèi)蝿?wù)從隊(duì)列中移除。
[0020]進(jìn)一步地,執(zhí)行裝置還包括:第三獲取模塊,用于在按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)之后,獲取執(zhí)行保存的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù);第二保存模塊,用于將執(zhí)行結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集合。
[0021]采用本發(fā)明實(shí)施例,在獲取到待執(zhí)行的第一查詢?nèi)蝿?wù)之后,按照第一查詢?nèi)蝿?wù)中攜帶的執(zhí)行該任務(wù)所占用的數(shù)據(jù)庫的標(biāo)識,將第一查詢?nèi)蝿?wù)保存入該標(biāo)識所指向的隊(duì)列,按照各個(gè)查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序依次獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,并按照依次獲取到的任務(wù)編號串行執(zhí)行各個(gè)查詢?nèi)蝿?wù)。在上述實(shí)施例中,為每個(gè)數(shù)據(jù)庫設(shè)置一個(gè)隊(duì)列,通過將查詢?nèi)蝿?wù)保存入對應(yīng)的數(shù)據(jù)庫的隊(duì)列中,并按照隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號及查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序,對該數(shù)據(jù)庫執(zhí)行查詢?nèi)蝿?wù),可以實(shí)現(xiàn)對各個(gè)數(shù)據(jù)庫的查詢?nèi)蝿?wù)進(jìn)行排隊(duì)并自動串行執(zhí)行隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù),避免了現(xiàn)有技術(shù)中對一個(gè)數(shù)據(jù)庫同時(shí)執(zhí)行多個(gè)耗時(shí)查詢?nèi)蝿?wù)時(shí),各個(gè)耗時(shí)任務(wù)對數(shù)據(jù)庫的資源搶占的問題。通過本發(fā)明實(shí)施例,解決了現(xiàn)有技術(shù)中同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢時(shí),多個(gè)耗時(shí)查詢對數(shù)據(jù)庫資源搶占的問題,實(shí)現(xiàn)了同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢操作時(shí)串行化執(zhí)行各個(gè)查詢操作的效果。
【專利附圖】
【附圖說明】
[0022]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0023]圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法的流程圖;
[0024]圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法的流程圖;
[0025]圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的查詢?nèi)蝿?wù)的執(zhí)行子流程的流程圖;以及
[0026]圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行裝置的示意圖。
【具體實(shí)施方式】
[0027]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0028]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0029]需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
[0030]圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法的流程圖,如圖1所示,該執(zhí)行方法包括如下的步驟S102至步驟S108:
[0031]步驟S102,獲取待執(zhí)行的第一查詢?nèi)蝿?wù)。
[0032]其中,第一查詢?nèi)蝿?wù)中攜帶有執(zhí)行第一查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識。
[0033]步驟S104,將第一查詢?nèi)蝿?wù)保存入標(biāo)識所指向的隊(duì)列。
[0034]步驟S106,獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號。
[0035]其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第一查詢?nèi)蝿?wù)。
[0036]步驟S108,按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)。
[0037]采用本發(fā)明實(shí)施例,在獲取到待執(zhí)行的第一查詢?nèi)蝿?wù)之后,按照第一查詢?nèi)蝿?wù)中攜帶的執(zhí)行該任務(wù)所占用的數(shù)據(jù)庫的標(biāo)識,將第一查詢?nèi)蝿?wù)保存入該標(biāo)識所指向的隊(duì)列,按照各個(gè)查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序依次獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,并按照依次獲取到的任務(wù)編號串行執(zhí)行各個(gè)查詢?nèi)蝿?wù)。在上述實(shí)施例中,為每個(gè)數(shù)據(jù)庫設(shè)置一個(gè)隊(duì)列,通過將查詢?nèi)蝿?wù)保存入對應(yīng)的數(shù)據(jù)庫的隊(duì)列中,并按照隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號及查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序,對該數(shù)據(jù)庫執(zhí)行查詢?nèi)蝿?wù),可以實(shí)現(xiàn)對各個(gè)數(shù)據(jù)庫的查詢?nèi)蝿?wù)進(jìn)行排隊(duì)并自動串行執(zhí)行隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù),避免了現(xiàn)有技術(shù)中對一個(gè)數(shù)據(jù)庫同時(shí)執(zhí)行多個(gè)耗時(shí)查詢?nèi)蝿?wù)時(shí),各個(gè)耗時(shí)任務(wù)對數(shù)據(jù)庫的資源搶占的問題。通過本發(fā)明實(shí)施例,解決了現(xiàn)有技術(shù)中同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢時(shí),多個(gè)耗時(shí)查詢對數(shù)據(jù)庫資源搶占的問題,實(shí)現(xiàn)了同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢操作時(shí)串行化執(zhí)行各個(gè)查詢操作的效果。
[0038]在上述的實(shí)施例中,在獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號時(shí),按照查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序依序獲取任務(wù)編號;在按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)時(shí),按照獲取到的任務(wù)編號依次執(zhí)行隊(duì)列中的各個(gè)查詢?nèi)蝿?wù),而不是以任務(wù)編號的大小為執(zhí)行順序執(zhí)行各個(gè)查詢?nèi)蝿?wù)。
[0039]在一個(gè)可選的實(shí)施例中,可以通過為各個(gè)數(shù)據(jù)庫設(shè)置統(tǒng)一的數(shù)據(jù)庫訪問接口來實(shí)現(xiàn)本發(fā)明上述實(shí)施例,具體地,通過統(tǒng)一的數(shù)據(jù)庫訪問接口接收訪問各個(gè)數(shù)據(jù)庫的各個(gè)查詢?nèi)蝿?wù),并對各個(gè)查詢?nèi)蝿?wù)進(jìn)行分組排隊(duì),即使用統(tǒng)一的數(shù)據(jù)庫訪問接口將訪問同一個(gè)數(shù)據(jù)庫的查詢?nèi)蝿?wù)保存至同一個(gè)隊(duì)列中,并串行化執(zhí)行隊(duì)列中的各個(gè)查詢?nèi)蝿?wù)。
[0040]本實(shí)施例中的用于保存查詢?nèi)蝿?wù)的隊(duì)列會自動按需創(chuàng)建,無需手動創(chuàng)建,即可根據(jù)查詢?nèi)蝿?wù)要訪問的數(shù)據(jù)庫對查詢?nèi)蝿?wù)進(jìn)行分組,可以充分的利用每個(gè)數(shù)據(jù)庫服務(wù)器的資源,避免同時(shí)執(zhí)行多個(gè)查詢?nèi)蝿?wù)對數(shù)據(jù)庫資源搶占的問題。
[0041]上述實(shí)施例中的隊(duì)列是先進(jìn)先出(First-1n-First-OutJPFIFO)的線性表,在具體應(yīng)用中通常用鏈表或者數(shù)組來實(shí)現(xiàn),隊(duì)列只允許在后端進(jìn)行插入操作,在前端進(jìn)行刪除操作。
[0042]根據(jù)本發(fā)明上述實(shí)施例,將第一查詢?nèi)蝿?wù)保存入標(biāo)識所指向的隊(duì)列可以包括:檢測是否存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列;若存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列,則將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾;若不存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列,則創(chuàng)建隊(duì)列,并將第一查詢?nèi)蝿?wù)保存至隊(duì)列。
[0043]具體地,檢測是否存在已創(chuàng)建的第一查詢?nèi)蝿?wù)中攜帶的數(shù)據(jù)庫的標(biāo)識所對應(yīng)的隊(duì)列,在存在已創(chuàng)建的該標(biāo)識所對應(yīng)的隊(duì)列時(shí),將第一查詢?nèi)蝿?wù)添加至該隊(duì)列的隊(duì)尾;在不存在已創(chuàng)建的該標(biāo)識所對應(yīng)的隊(duì)列(即該數(shù)據(jù)庫沒有對應(yīng)的隊(duì)列)時(shí),創(chuàng)建該標(biāo)識所對應(yīng)的隊(duì)列,并將第一查詢?nèi)蝿?wù)保存至隊(duì)列中。
[0044]在上述實(shí)施例中,一個(gè)數(shù)據(jù)庫對應(yīng)一個(gè)隊(duì)列,當(dāng)接收到查詢?nèi)蝿?wù)時(shí),根據(jù)查詢?nèi)蝿?wù)中攜帶的執(zhí)行該查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識,確定查詢?nèi)蝿?wù)要訪問的數(shù)據(jù)庫,并檢測該數(shù)據(jù)庫的隊(duì)列是否存在,在該數(shù)據(jù)庫的隊(duì)列存在的情況下,將接收到的查詢?nèi)蝿?wù)保存至隊(duì)列的隊(duì)尾;在該數(shù)據(jù)庫的隊(duì)列不存在的情況下,創(chuàng)建隊(duì)列并將接收到的查詢?nèi)蝿?wù)保存至隊(duì)列中。
[0045]通過本發(fā)明上述實(shí)施例,在一個(gè)數(shù)據(jù)庫接收到多個(gè)查詢?nèi)蝿?wù)時(shí),通過數(shù)據(jù)庫的隊(duì)列保存接收到的查詢?nèi)蝿?wù),并串行執(zhí)行隊(duì)列中已保存的查詢?nèi)蝿?wù),避免了現(xiàn)有技術(shù)中對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)查詢操作時(shí),多個(gè)查詢操作同時(shí)執(zhí)行導(dǎo)致?lián)屨紨?shù)據(jù)庫資源的問題。
[0046]在本發(fā)明的上述實(shí)施例中,將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾可以包括:檢測隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第二查詢?nèi)蝿?wù);若隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值,則將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾。
[0047]具體地,檢測數(shù)據(jù)庫的隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,若數(shù)據(jù)庫的隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值,則將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾;若數(shù)據(jù)庫的隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量達(dá)到了預(yù)設(shè)閾值,則將生成提示信息,以提示用戶數(shù)據(jù)庫無法及時(shí)處理該第一查詢?nèi)蝿?wù)。
[0048]在上述實(shí)施例中,預(yù)設(shè)閾值是預(yù)先設(shè)定的數(shù)據(jù)庫能夠在預(yù)設(shè)時(shí)間內(nèi)處理的查詢?nèi)蝿?wù)的上限值,若數(shù)據(jù)庫的隊(duì)列中保存的查詢?nèi)蝿?wù)的數(shù)量已達(dá)到預(yù)設(shè)閾值,那么在接收到新的查詢?nèi)蝿?wù)時(shí),數(shù)據(jù)庫將不能在預(yù)設(shè)時(shí)間內(nèi)處理新接收到的查詢?nèi)蝿?wù),即數(shù)據(jù)庫不能及時(shí)處理新接收到的查詢?nèi)蝿?wù)。
[0049]根據(jù)本發(fā)明上述實(shí)施例,按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)可以包括:檢測隊(duì)列是否為空;若隊(duì)列不為空,則讀取當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)的任務(wù)編號對應(yīng)的第四查詢?nèi)蝿?wù),其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第三查詢?nèi)蝿?wù)和第四查詢?nèi)蝿?wù);執(zhí)行第四查詢?nèi)蝿?wù),并將第四查詢?nèi)蝿?wù)從隊(duì)列中移除。
[0050]具體地,按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)時(shí),檢測數(shù)據(jù)庫的隊(duì)列是否為空,若數(shù)據(jù)庫的隊(duì)列不為空,則讀取在當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)之后進(jìn)入隊(duì)列的第四查詢?nèi)蝿?wù),執(zhí)行該第四查詢?nèi)蝿?wù)并將其從隊(duì)列中移除。
[0051]進(jìn)一步地,在數(shù)據(jù)庫的隊(duì)列為空的情況下,暫停執(zhí)行查詢?nèi)蝿?wù)的流程,啟動計(jì)時(shí)器記錄暫停的時(shí)間,并在暫停時(shí)間達(dá)到預(yù)設(shè)等待時(shí)間之后,再次檢測數(shù)據(jù)庫的隊(duì)列是否為空。
[0052]需要進(jìn)一步說明的是,查詢?nèi)蝿?wù)的任務(wù)編號的數(shù)值大小不影響執(zhí)行查詢?nèi)蝿?wù)的先后次序,僅用作區(qū)分查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的先后順序。
[0053]根據(jù)本發(fā)明上述實(shí)施例,在按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)之后,執(zhí)行方法還可以包括:獲取執(zhí)行保存的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù);將執(zhí)行結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集合。
[0054]具體地,在按照查詢?nèi)蝿?wù)的任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)之后,獲取執(zhí)行隊(duì)列中的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù),并將結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集合中。
[0055]進(jìn)一步地,在執(zhí)行完一個(gè)查詢?nèi)蝿?wù)之后,結(jié)果數(shù)據(jù)集合將該查詢?nèi)蝿?wù)的查詢結(jié)果數(shù)據(jù)返回給發(fā)送該查詢?nèi)蝿?wù)的用戶。
[0056]圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法的流程圖,如圖2所示的執(zhí)行方法可以包括如下步驟:
[0057]步驟S202,接收到查詢?nèi)蝿?wù)。
[0058]其中,查詢?nèi)蝿?wù)中攜帶有執(zhí)行該查詢?nèi)蝿?wù)所需占用的數(shù)據(jù)庫的標(biāo)識。
[0059]步驟S204,檢測查詢?nèi)蝿?wù)所對應(yīng)的分組隊(duì)列是否存在。
[0060]具體地,檢測該查詢?nèi)蝿?wù)中攜帶的標(biāo)識所對應(yīng)的數(shù)據(jù)庫中是否存在分組隊(duì)列(即上述實(shí)施例中的隊(duì)列),在查詢?nèi)蝿?wù)所對應(yīng)的分組隊(duì)列不存在的情況下,執(zhí)行步驟S206 ;在查詢?nèi)蝿?wù)所對應(yīng)的分組隊(duì)列存在的情況下,執(zhí)行步驟S208。
[0061]步驟S206,為標(biāo)識對應(yīng)的數(shù)據(jù)庫創(chuàng)建分組隊(duì)列。
[0062]步驟S208,獲取查詢?nèi)蝿?wù)對應(yīng)的分組隊(duì)列。
[0063]步驟S210,檢測分組隊(duì)列中已保存的查詢?nèi)蝿?wù)的數(shù)量是否已達(dá)到預(yù)設(shè)閾值。
[0064]具體地,檢測分組隊(duì)列中已保存的查詢?nèi)蝿?wù)(即上述實(shí)施例中的第二查詢?nèi)蝿?wù))的數(shù)量是否已經(jīng)達(dá)到預(yù)設(shè)閾值,即檢測分組隊(duì)列中的查詢?nèi)蝿?wù)是否已達(dá)到數(shù)據(jù)庫的處理上限,在分組隊(duì)列中已保存的查詢?nèi)蝿?wù)的數(shù)量已達(dá)到預(yù)設(shè)閾值時(shí),執(zhí)行步驟S212;在分組隊(duì)列中已保存的查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值時(shí),執(zhí)行步驟S214。
[0065]步驟S212,生成提示無法及時(shí)查詢?nèi)蝿?wù)的提示信息。
[0066]具體地,在分組隊(duì)列中已保存的查詢?nèi)蝿?wù)的數(shù)量已達(dá)到預(yù)設(shè)閾值,即數(shù)據(jù)庫忙時(shí),生成提示信息以提示用戶數(shù)據(jù)庫無法及時(shí)處理查詢?nèi)蝿?wù)。
[0067]步驟S214,將查詢?nèi)蝿?wù)保存至分組隊(duì)列的隊(duì)列末尾。
[0068]步驟S216,等待結(jié)果數(shù)據(jù)集合返回執(zhí)行結(jié)果數(shù)據(jù)。
[0069]具體地,可以通過啟動任務(wù)執(zhí)行子流程來執(zhí)行查詢?nèi)蝿?wù),并獲取查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù),其中,任務(wù)執(zhí)行子流程可以包括如圖3所示的步驟S302至步驟S310。
[0070]步驟S302,啟動任務(wù)執(zhí)行子流程。
[0071]步驟S304,檢測分組隊(duì)列是否為空。
[0072]具體地,檢測分組隊(duì)列中是否有待執(zhí)行的查詢?nèi)蝿?wù),在分組隊(duì)列為空的情況下,執(zhí)行步驟S306,在分組隊(duì)列不為空的情況下,執(zhí)行步驟S308。
[0073]步驟S306,暫停任務(wù)執(zhí)行子流程并啟動計(jì)時(shí)器,記錄任務(wù)執(zhí)行子流程暫停的時(shí)間。
[0074]具體地,在任務(wù)執(zhí)行子流程暫停的時(shí)間達(dá)到預(yù)設(shè)時(shí)間后,返回執(zhí)行步驟S302。
[0075]步驟S308,獲取分組隊(duì)列中排在隊(duì)首的查詢?nèi)蝿?wù),并將該查詢?nèi)蝿?wù)從分組隊(duì)列中移除。
[0076]步驟S310,執(zhí)行查詢?nèi)蝿?wù),并將執(zhí)行結(jié)果數(shù)據(jù)保存至結(jié)果數(shù)據(jù)集合。
[0077]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0078]圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行裝置的示意圖,如圖4所示,該執(zhí)行裝置可以包括:第一獲取模塊10,用于獲取待執(zhí)行的第一查詢?nèi)蝿?wù),其中,第一查詢?nèi)蝿?wù)中攜帶有執(zhí)行第一查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識;第一保存模塊30,用于將第一查詢?nèi)蝿?wù)保存入標(biāo)識所指向的隊(duì)列;第二獲取模塊50,用于獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第一查詢?nèi)蝿?wù);執(zhí)行模塊70,用于按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)。
[0079]采用本發(fā)明實(shí)施例,在獲取到待執(zhí)行的第一查詢?nèi)蝿?wù)之后,按照第一查詢?nèi)蝿?wù)中攜帶的執(zhí)行該任務(wù)所占用的數(shù)據(jù)庫的標(biāo)識,將第一查詢?nèi)蝿?wù)保存入該標(biāo)識所指向的隊(duì)列,按照各個(gè)查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序依次獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,并按照依次獲取到的任務(wù)編號串行執(zhí)行各個(gè)查詢?nèi)蝿?wù)。在上述實(shí)施例中,為每個(gè)數(shù)據(jù)庫設(shè)置一個(gè)隊(duì)列,通過將查詢?nèi)蝿?wù)保存入對應(yīng)的數(shù)據(jù)庫的隊(duì)列中,并按照隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號及查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序,對該數(shù)據(jù)庫執(zhí)行查詢?nèi)蝿?wù),可以實(shí)現(xiàn)對各個(gè)數(shù)據(jù)庫的查詢?nèi)蝿?wù)進(jìn)行排隊(duì)并自動串行執(zhí)行隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù),避免了現(xiàn)有技術(shù)中對一個(gè)數(shù)據(jù)庫同時(shí)執(zhí)行多個(gè)耗時(shí)查詢?nèi)蝿?wù)時(shí),各個(gè)耗時(shí)任務(wù)對數(shù)據(jù)庫的資源搶占的問題。通過本發(fā)明實(shí)施例,解決了現(xiàn)有技術(shù)中同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢時(shí),多個(gè)耗時(shí)查詢對數(shù)據(jù)庫資源搶占的問題,實(shí)現(xiàn)了同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢操作時(shí)串行化執(zhí)行各個(gè)查詢操作的效果。
[0080]在上述的實(shí)施例中,在獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號時(shí),按照查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序依序獲取任務(wù)編號;在按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)時(shí),按照獲取到的任務(wù)編號依次執(zhí)行隊(duì)列中的各個(gè)查詢?nèi)蝿?wù),而不是以任務(wù)編號的大小為執(zhí)行順序執(zhí)行各個(gè)查詢?nèi)蝿?wù)。
[0081 ] 在一個(gè)可選的實(shí)施例中,可以通過為各個(gè)數(shù)據(jù)庫設(shè)置統(tǒng)一的數(shù)據(jù)庫訪問接口來實(shí)現(xiàn)本發(fā)明上述實(shí)施例,具體地,通過統(tǒng)一的數(shù)據(jù)庫訪問接口接收訪問各個(gè)數(shù)據(jù)庫的各個(gè)查詢?nèi)蝿?wù),并對各個(gè)查詢?nèi)蝿?wù)進(jìn)行分組排隊(duì),即使用統(tǒng)一的數(shù)據(jù)庫訪問接口將訪問同一個(gè)數(shù)據(jù)庫的查詢?nèi)蝿?wù)保存至同一個(gè)隊(duì)列中,并串行化執(zhí)行隊(duì)列中的各個(gè)查詢?nèi)蝿?wù)。
[0082]本實(shí)施例中的用于保存查詢?nèi)蝿?wù)的隊(duì)列會自動按需創(chuàng)建,無需手動創(chuàng)建,即可根據(jù)查詢?nèi)蝿?wù)要訪問的數(shù)據(jù)庫對查詢?nèi)蝿?wù)進(jìn)行分組,可以充分的利用每個(gè)數(shù)據(jù)庫服務(wù)器的資源,避免同時(shí)執(zhí)行多個(gè)查詢?nèi)蝿?wù)對數(shù)據(jù)庫資源搶占的問題。
[0083]上述實(shí)施例中的隊(duì)列是先進(jìn)先出(First-1n-First-OutJPFIFO)的線性表,在具體應(yīng)用中通常用鏈表或者數(shù)組來實(shí)現(xiàn),隊(duì)列只允許在后端進(jìn)行插入操作,在前端進(jìn)行刪除操作。
[0084]根據(jù)本發(fā)明上述實(shí)施例,第一保存模塊可以包括:第一檢測模塊,用于檢測是否存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列;添加模塊,用于在存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列的情況下,將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾;保存子模塊,用于在不存在已創(chuàng)建的標(biāo)識所對應(yīng)的隊(duì)列的情況下,創(chuàng)建隊(duì)列,并將第一查詢?nèi)蝿?wù)保存至隊(duì)列。
[0085]具體地,檢測是否存在已創(chuàng)建的第一查詢?nèi)蝿?wù)中攜帶的數(shù)據(jù)庫的標(biāo)識所對應(yīng)的隊(duì)列,在存在已創(chuàng)建的該標(biāo)識所對應(yīng)的隊(duì)列時(shí),將第一查詢?nèi)蝿?wù)添加至該隊(duì)列的隊(duì)尾;在不存在已創(chuàng)建的該標(biāo)識所對應(yīng)的隊(duì)列(即該數(shù)據(jù)庫沒有對應(yīng)的隊(duì)列)時(shí),創(chuàng)建該標(biāo)識所對應(yīng)的隊(duì)列,并將第一查詢?nèi)蝿?wù)保存至隊(duì)列中。
[0086]在上述實(shí)施例中,一個(gè)數(shù)據(jù)庫對應(yīng)一個(gè)隊(duì)列,當(dāng)接收到查詢?nèi)蝿?wù)時(shí),根據(jù)查詢?nèi)蝿?wù)中攜帶的執(zhí)行該查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識,確定查詢?nèi)蝿?wù)要訪問的數(shù)據(jù)庫,并檢測該數(shù)據(jù)庫的隊(duì)列是否存在,在該數(shù)據(jù)庫的隊(duì)列存在的情況下,將接收到的查詢?nèi)蝿?wù)保存至隊(duì)列的隊(duì)尾;在該數(shù)據(jù)庫的隊(duì)列不存在的情況下,創(chuàng)建隊(duì)列并將接收到的查詢?nèi)蝿?wù)保存至隊(duì)列中。
[0087]通過本發(fā)明上述實(shí)施例,在一個(gè)數(shù)據(jù)庫接收到多個(gè)查詢?nèi)蝿?wù)時(shí),通過數(shù)據(jù)庫的隊(duì)列保存接收到的查詢?nèi)蝿?wù),并串行執(zhí)行隊(duì)列中已保存的查詢?nèi)蝿?wù),避免了現(xiàn)有技術(shù)中對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)查詢操作時(shí),多個(gè)查詢操作同時(shí)執(zhí)行導(dǎo)致?lián)屨紨?shù)據(jù)庫資源的問題。
[0088]在本發(fā)明的上述實(shí)施例中,添加模塊可以包括:第二檢測模塊,用于檢測隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第二查詢?nèi)蝿?wù);添加子模塊,用于在隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值的情況下,將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾。
[0089]具體地,檢測數(shù)據(jù)庫的隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,若數(shù)據(jù)庫的隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值,則將第一查詢?nèi)蝿?wù)添加至隊(duì)列的隊(duì)尾;若數(shù)據(jù)庫的隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量達(dá)到了預(yù)設(shè)閾值,則將生成提示信息,以提示用戶數(shù)據(jù)庫無法及時(shí)處理該第一查詢?nèi)蝿?wù)。
[0090]在上述實(shí)施例中,預(yù)設(shè)閾值是預(yù)先設(shè)定的數(shù)據(jù)庫能夠在預(yù)設(shè)時(shí)間內(nèi)處理的查詢?nèi)蝿?wù)的上限值,若數(shù)據(jù)庫的隊(duì)列中保存的查詢?nèi)蝿?wù)的數(shù)量已達(dá)到預(yù)設(shè)閾值,那么在接收到新的查詢?nèi)蝿?wù)時(shí),數(shù)據(jù)庫將不能在預(yù)設(shè)時(shí)間內(nèi)處理新接收到的查詢?nèi)蝿?wù),即數(shù)據(jù)庫不能及時(shí)處理新接收到的查詢?nèi)蝿?wù)。
[0091]根據(jù)本發(fā)明上述實(shí)施例,執(zhí)行模塊可以包括:第三檢測模塊,用于檢測隊(duì)列是否為空;讀取模塊,用于在隊(duì)列不為空的情況下,讀取當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)的任務(wù)編號對應(yīng)的第四查詢?nèi)蝿?wù),其中,保存的各個(gè)查詢?nèi)蝿?wù)包括第三查詢?nèi)蝿?wù)和第四查詢?nèi)蝿?wù);執(zhí)行子模塊,用于執(zhí)行第四查詢?nèi)蝿?wù),并將第四查詢?nèi)蝿?wù)從隊(duì)列中移除。
[0092]具體地,按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)時(shí),檢測數(shù)據(jù)庫的隊(duì)列是否為空,若數(shù)據(jù)庫的隊(duì)列不為空,則讀取在當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)之后進(jìn)入隊(duì)列的第四查詢?nèi)蝿?wù),執(zhí)行該第四查詢?nèi)蝿?wù)并將其從隊(duì)列中移除。
[0093]進(jìn)一步地,在數(shù)據(jù)庫的隊(duì)列為空的情況下,暫停執(zhí)行查詢?nèi)蝿?wù)的流程,啟動計(jì)時(shí)器記錄暫停的時(shí)間,并在暫停時(shí)間達(dá)到預(yù)設(shè)等待時(shí)間之后,再次檢測數(shù)據(jù)庫的隊(duì)列是否為空。
[0094]需要進(jìn)一步說明的是,查詢?nèi)蝿?wù)的任務(wù)編號的數(shù)值大小不影響執(zhí)行查詢?nèi)蝿?wù)的先后次序,僅用作區(qū)分查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的先后順序。
[0095]根據(jù)本發(fā)明上述實(shí)施例,執(zhí)行裝置還可以包括:第三獲取模塊,用于在按照任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)之后,獲取執(zhí)行保存的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù);第二保存模塊,用于將執(zhí)行結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集合。
[0096]具體地,在按照查詢?nèi)蝿?wù)的任務(wù)編號執(zhí)行隊(duì)列中的保存的各個(gè)查詢?nèi)蝿?wù)之后,獲取執(zhí)行隊(duì)列中的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù),并將結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集合中。
[0097]進(jìn)一步地,在執(zhí)行完一個(gè)查詢?nèi)蝿?wù)之后,結(jié)果數(shù)據(jù)集合將該查詢?nèi)蝿?wù)的查詢結(jié)果數(shù)據(jù)返回給發(fā)送該查詢?nèi)蝿?wù)的用戶。
[0098]本實(shí)施例中所提供的各個(gè)模塊與方法實(shí)施例對應(yīng)步驟所提供的使用方法相同、應(yīng)用場景也可以相同。當(dāng)然,需要注意的是,上述模塊涉及的方案可以不限于上述實(shí)施例中的內(nèi)容和場景,且上述模塊可以運(yùn)行在計(jì)算機(jī)終端或移動終端,可以通過軟件或硬件實(shí)現(xiàn)。
[0099]從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果:
[0100]采用本發(fā)明實(shí)施例,在獲取到待執(zhí)行的第一查詢?nèi)蝿?wù)之后,按照第一查詢?nèi)蝿?wù)中攜帶的執(zhí)行該任務(wù)所占用的數(shù)據(jù)庫的標(biāo)識,將第一查詢?nèi)蝿?wù)保存入該標(biāo)識所指向的隊(duì)列,按照各個(gè)查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序依次獲取隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,并按照依次獲取到的任務(wù)編號串行執(zhí)行各個(gè)查詢?nèi)蝿?wù)。在上述實(shí)施例中,為每個(gè)數(shù)據(jù)庫設(shè)置一個(gè)隊(duì)列,通過將查詢?nèi)蝿?wù)保存入對應(yīng)的數(shù)據(jù)庫的隊(duì)列中,并按照隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號及查詢?nèi)蝿?wù)進(jìn)入隊(duì)列的次序,對該數(shù)據(jù)庫執(zhí)行查詢?nèi)蝿?wù),可以實(shí)現(xiàn)對各個(gè)數(shù)據(jù)庫的查詢?nèi)蝿?wù)進(jìn)行排隊(duì)并自動串行執(zhí)行隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù),避免了現(xiàn)有技術(shù)中對一個(gè)數(shù)據(jù)庫同時(shí)執(zhí)行多個(gè)耗時(shí)查詢?nèi)蝿?wù)時(shí),各個(gè)耗時(shí)任務(wù)對數(shù)據(jù)庫的資源搶占的問題。通過本發(fā)明實(shí)施例,解決了現(xiàn)有技術(shù)中同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢時(shí),多個(gè)耗時(shí)查詢對數(shù)據(jù)庫資源搶占的問題,實(shí)現(xiàn)了同時(shí)對一個(gè)數(shù)據(jù)庫執(zhí)行多個(gè)耗時(shí)查詢操作時(shí)串行化執(zhí)行各個(gè)查詢操作的效果。
[0101]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0102]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行方法,其特征在于,包括: 獲取待執(zhí)行的第一查詢?nèi)蝿?wù),其中,所述第一查詢?nèi)蝿?wù)中攜帶有執(zhí)行所述第一查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識; 將所述第一查詢?nèi)蝿?wù)保存入所述標(biāo)識所指向的隊(duì)列; 獲取所述隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,其中,所述保存的各個(gè)查詢?nèi)蝿?wù)包括所述第一查詢?nèi)蝿?wù); 按照所述任務(wù)編號執(zhí)行所述隊(duì)列中的所述保存的各個(gè)查詢?nèi)蝿?wù)。
2.根據(jù)權(quán)利要求1所述的執(zhí)行方法,其特征在于,將所述第一查詢?nèi)蝿?wù)保存入所述標(biāo)識所指向的隊(duì)列包括: 檢測是否存在已創(chuàng)建的所述標(biāo)識所對應(yīng)的所述隊(duì)列; 若存在已創(chuàng)建的所述標(biāo)識所對應(yīng)的所述隊(duì)列,則將所述第一查詢?nèi)蝿?wù)添加至所述隊(duì)列的隊(duì)尾; 若不存在已創(chuàng)建的所述標(biāo)識所對應(yīng)的所述隊(duì)列,則創(chuàng)建所述隊(duì)列,并將所述第一查詢?nèi)蝿?wù)保存至所述隊(duì)列。
3.根據(jù)權(quán)利要求2所述的執(zhí)行方法,其特征在于,將所述第一查詢?nèi)蝿?wù)添加至所述隊(duì)列的隊(duì)尾包括: 檢測所述隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,其中,所述保存的各個(gè)查詢?nèi)蝿?wù)包括所述第二查詢?nèi)蝿?wù); 若所述隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值,則將所述第一查詢?nèi)蝿?wù)添加至所述隊(duì)列的隊(duì)尾。
4.根據(jù)權(quán)利要求1所述的執(zhí)行方法,其特征在于,按照所述任務(wù)編號執(zhí)行所述隊(duì)列中的所述保存的各個(gè)查詢?nèi)蝿?wù)包括: 檢測所述隊(duì)列是否為空; 若所述隊(duì)列不為空,則讀取當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)的任務(wù)編號對應(yīng)的第四查詢?nèi)蝿?wù),其中,所述保存的各個(gè)查詢?nèi)蝿?wù)包括所述第三查詢?nèi)蝿?wù)和所述第四查詢?nèi)蝿?wù); 執(zhí)行所述第四查詢?nèi)蝿?wù),并將所述第四查詢?nèi)蝿?wù)從所述隊(duì)列中移除。
5.根據(jù)權(quán)利要求1至4中任意一項(xiàng)所述的執(zhí)行方法,其特征在于,在按照所述任務(wù)編號執(zhí)行所述隊(duì)列中的所述保存的各個(gè)查詢?nèi)蝿?wù)之后,所述執(zhí)行方法還包括: 獲取執(zhí)行所述保存的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù); 將所述執(zhí)行結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集合。
6.一種數(shù)據(jù)庫的查詢?nèi)蝿?wù)的執(zhí)行裝置,其特征在于,包括: 第一獲取模塊,用于獲取待執(zhí)行的第一查詢?nèi)蝿?wù),其中,所述第一查詢?nèi)蝿?wù)中攜帶有執(zhí)行所述第一查詢?nèi)蝿?wù)所占用的數(shù)據(jù)庫的標(biāo)識; 第一保存模塊,用于將所述第一查詢?nèi)蝿?wù)保存入所述標(biāo)識所指向的隊(duì)列; 第二獲取模塊,用于獲取所述隊(duì)列中保存的各個(gè)查詢?nèi)蝿?wù)的任務(wù)編號,其中,所述保存的各個(gè)查詢?nèi)蝿?wù)包括所述第一查詢?nèi)蝿?wù); 執(zhí)行模塊,用于按照所述任務(wù)編號執(zhí)行所述隊(duì)列中的所述保存的各個(gè)查詢?nèi)蝿?wù)。
7.根據(jù)權(quán)利要求6所述的執(zhí)行裝置,其特征在于,所述第一保存模塊包括: 第一檢測模塊,用于檢測是否存在已創(chuàng)建的所述標(biāo)識所對應(yīng)的所述隊(duì)列; 添加模塊,用于在存在已創(chuàng)建的所述標(biāo)識所對應(yīng)的所述隊(duì)列的情況下,將所述第一查詢?nèi)蝿?wù)添加至所述隊(duì)列的隊(duì)尾; 保存子模塊,用于在不存在已創(chuàng)建的所述標(biāo)識所對應(yīng)的所述隊(duì)列的情況下,創(chuàng)建所述隊(duì)列,并將所述第一查詢?nèi)蝿?wù)保存至所述隊(duì)列。
8.根據(jù)權(quán)利要求7所述的執(zhí)行裝置,其特征在于,所述添加模塊包括: 第二檢測模塊,用于檢測所述隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量是否達(dá)到預(yù)設(shè)閾值,其中,所述保存的各個(gè)查詢?nèi)蝿?wù)包括所述第二查詢?nèi)蝿?wù); 添加子模塊,用于在所述隊(duì)列中已保存的第二查詢?nèi)蝿?wù)的數(shù)量未達(dá)到預(yù)設(shè)閾值的情況下,將所述第一查詢?nèi)蝿?wù)添加至所述隊(duì)列的隊(duì)尾。
9.根據(jù)權(quán)利要求6所述的執(zhí)行裝置,其特征在于,所述執(zhí)行模塊包括: 第三檢測模塊,用于檢測所述隊(duì)列是否為空; 讀取模塊,用于在所述隊(duì)列不為空的情況下,讀取當(dāng)前執(zhí)行完成的第三查詢?nèi)蝿?wù)的任務(wù)編號對應(yīng)的第四查詢?nèi)蝿?wù),其中,所述保存的各個(gè)查詢?nèi)蝿?wù)包括所述第三查詢?nèi)蝿?wù)和所述第四查詢?nèi)蝿?wù); 執(zhí)行子模塊,用于執(zhí)行所述第四查詢?nèi)蝿?wù),并將所述第四查詢?nèi)蝿?wù)從所述隊(duì)列中移除。
10.根據(jù)權(quán)利要求6至9中任意一項(xiàng)所述的執(zhí)行裝置,其特征在于,所述執(zhí)行裝置還包括: 第三獲取模塊,用于在按照所述任務(wù)編號執(zhí)行所述隊(duì)列中的所述保存的各個(gè)查詢?nèi)蝿?wù)之后,獲取執(zhí)行所述保存的各個(gè)查詢?nèi)蝿?wù)的執(zhí)行結(jié)果數(shù)據(jù); 第二保存模塊,用于將所述執(zhí)行結(jié)果數(shù)據(jù)保存入結(jié)果數(shù)據(jù)集合。
【文檔編號】G06F17/30GK104462420SQ201410771376
【公開日】2015年3月25日 申請日期:2014年12月12日 優(yōu)先權(quán)日:2014年12月12日
【發(fā)明者】陳國興 申請人:北京國雙科技有限公司