本發(fā)明實(shí)施例涉及通信技術(shù),尤其涉及一種數(shù)據(jù)庫(kù)結(jié)果集緩存方法及設(shè)備。
背景技術(shù):目前,在數(shù)據(jù)庫(kù)實(shí)際應(yīng)用環(huán)境中,為了快速響應(yīng)用戶(hù)的查詢(xún)請(qǐng)求,常使用結(jié)果集緩存技術(shù),結(jié)果集緩存的原理是接收到相同的查詢(xún)請(qǐng)求時(shí),利用之前的查詢(xún)結(jié)果響應(yīng)當(dāng)前的查詢(xún)請(qǐng)求,而不是直接對(duì)原始數(shù)據(jù)進(jìn)行處理。結(jié)果集緩存技術(shù)使數(shù)據(jù)庫(kù)的查詢(xún)性能有很大的提升,可以有更少的物理讀寫(xiě)和更快的響應(yīng)時(shí)間。結(jié)果集緩存主要用于存儲(chǔ)數(shù)據(jù)表連接、聚集或排序等耗時(shí)操作的結(jié)果,以快速得到結(jié)果?,F(xiàn)有技術(shù)中,是根據(jù)結(jié)構(gòu)化查詢(xún)語(yǔ)言(StructuredQueryLanguage,簡(jiǎn)稱(chēng):SQL)查詢(xún)語(yǔ)句來(lái)做結(jié)果集緩存的,如果一個(gè)SQL查詢(xún)語(yǔ)句是以select開(kāi)始的,則數(shù)據(jù)庫(kù)服務(wù)器將把與該SQL文本的散列鍵值對(duì)應(yīng)的查詢(xún)結(jié)果緩存在緩存區(qū)中,每個(gè)緩存區(qū)都與一個(gè)SQL文本的散列鍵值對(duì)應(yīng),在應(yīng)用結(jié)果集緩存之前,數(shù)據(jù)庫(kù)服務(wù)器不會(huì)對(duì)SQL文本做任何處理,也就是說(shuō),若兩個(gè)SQL查詢(xún)語(yǔ)句只相差一個(gè)字符,這兩個(gè)SQL查詢(xún)語(yǔ)句也將使用緩存的不同結(jié)果集。然而,實(shí)際應(yīng)用中,對(duì)原始的數(shù)據(jù)表進(jìn)行更新有時(shí)是不可避免的,若原始的數(shù)據(jù)表發(fā)生了更新,會(huì)導(dǎo)致之前緩存的結(jié)果集不可用,當(dāng)接收到相同的查詢(xún)請(qǐng)求時(shí),需要耗費(fèi)中央處理器(CentralProcessingUnit,簡(jiǎn)稱(chēng):CPU)重新執(zhí)行整個(gè)查詢(xún)過(guò)程,以生成新的結(jié)果集。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供一種數(shù)據(jù)庫(kù)結(jié)果集緩存方法及設(shè)備,以避免在原始數(shù)據(jù)表發(fā)生改變時(shí),需要重新執(zhí)行整個(gè)執(zhí)行計(jì)劃,節(jié)省了查詢(xún)時(shí)間。第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)庫(kù)結(jié)果集緩存方法,包括:數(shù)據(jù)庫(kù)引擎接收數(shù)據(jù)操縱語(yǔ)言DML語(yǔ)句,所述DML語(yǔ)句用于使所述數(shù)據(jù)庫(kù)引擎對(duì)原始數(shù)據(jù)表進(jìn)行DML操作;所述數(shù)據(jù)庫(kù)引擎執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲(chǔ)有之前對(duì)所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過(guò)DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過(guò)DML操作的原始數(shù)據(jù)表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中。在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,包括:所述數(shù)據(jù)庫(kù)引擎立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;或,在滿足預(yù)設(shè)的觸發(fā)條件時(shí),所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)庫(kù)引擎接收數(shù)據(jù)操縱語(yǔ)言DML語(yǔ)句之前,還包括:對(duì)所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲(chǔ)在所述緩存區(qū)中。根據(jù)第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述執(zhí)行計(jì)劃包括結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL查詢(xún)語(yǔ)句。第二方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)庫(kù)引擎,包括:接收模塊,用于接收數(shù)據(jù)操縱語(yǔ)言DML語(yǔ)句,所述DML語(yǔ)句用于使所述數(shù)據(jù)庫(kù)引擎對(duì)原始數(shù)據(jù)表進(jìn)行DML操作;處理模塊,用于執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲(chǔ)有之前對(duì)所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過(guò)DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過(guò)DML操作的原始數(shù)據(jù)表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中。在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述處理模塊具體用于:立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;或,在滿足預(yù)設(shè)的觸發(fā)條件時(shí),喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述處理模塊還用于:對(duì)所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲(chǔ)在所述緩存區(qū)中。根據(jù)第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述執(zhí)行計(jì)劃包括結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL查詢(xún)語(yǔ)句。本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)結(jié)果集緩存方法及設(shè)備,通過(guò)數(shù)據(jù)庫(kù)引擎接收DML語(yǔ)句,對(duì)原始數(shù)據(jù)表進(jìn)行DML操作;所述數(shù)據(jù)庫(kù)引擎執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲(chǔ)有之前對(duì)所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過(guò)DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過(guò)DML操作的原始數(shù)據(jù)表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中。從而在原始數(shù)據(jù)表發(fā)生改變時(shí),可以不用重新執(zhí)行整個(gè)執(zhí)行計(jì)劃,而是在中間執(zhí)行結(jié)果的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,節(jié)省了查詢(xún)時(shí)間。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明數(shù)據(jù)庫(kù)結(jié)果集緩存方法實(shí)施例一的流程圖;圖2為本發(fā)明數(shù)據(jù)庫(kù)結(jié)果集緩存方法實(shí)施例二的流程圖;圖3為本發(fā)明數(shù)據(jù)庫(kù)結(jié)果集緩存方法中客戶(hù)端的執(zhí)行計(jì)劃的示意圖;圖4為本發(fā)明數(shù)據(jù)庫(kù)引擎實(shí)施例一的結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明數(shù)據(jù)庫(kù)結(jié)果集緩存方法實(shí)施例一的流程圖。如圖1所示,本實(shí)施例提供的方法可以包括:S101、數(shù)據(jù)庫(kù)引擎接收數(shù)據(jù)操縱語(yǔ)言(DataManipulationLanguage,簡(jiǎn)稱(chēng):DML)語(yǔ)句,所述DML語(yǔ)句用于使所述數(shù)據(jù)庫(kù)引擎對(duì)原始數(shù)據(jù)表進(jìn)行DML操作。DML語(yǔ)句具體可以用于對(duì)原始數(shù)據(jù)表進(jìn)行更新、插入或刪除操作,本實(shí)施例以對(duì)原始數(shù)據(jù)表插入一條新記錄為例進(jìn)行說(shuō)明。數(shù)據(jù)庫(kù)引擎在接收到DML語(yǔ)句時(shí),會(huì)根據(jù)DML語(yǔ)句對(duì)原始數(shù)據(jù)表進(jìn)行插入操作。S102、所述數(shù)據(jù)庫(kù)引擎執(zhí)行所述DML操作,若判斷獲知緩存區(qū)中存儲(chǔ)有之前對(duì)所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過(guò)DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過(guò)DML操作的原始數(shù)據(jù)表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中??梢岳斫獾氖?,若判斷獲知緩存區(qū)中沒(méi)有存儲(chǔ)之前對(duì)所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,可以不執(zhí)行操作。在實(shí)際應(yīng)用過(guò)程中,所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃可以包括兩種方式:第一種方式為所述數(shù)據(jù)庫(kù)引擎立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;第二種方式為在滿足預(yù)設(shè)的觸發(fā)條件時(shí),所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。本實(shí)施例不對(duì)此進(jìn)行限制。本實(shí)施例提供的數(shù)據(jù)庫(kù)結(jié)果集緩存方法,通過(guò)數(shù)據(jù)庫(kù)引擎接收DML語(yǔ)句,對(duì)原始數(shù)據(jù)表進(jìn)行DML操作;所述數(shù)據(jù)庫(kù)引擎執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲(chǔ)有之前對(duì)所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫(kù)引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過(guò)DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過(guò)DML操作的原始數(shù)據(jù)表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中。從而在原始數(shù)據(jù)表發(fā)生改變時(shí),可以不用重新執(zhí)行整個(gè)執(zhí)行計(jì)劃,而是在中間執(zhí)行結(jié)果的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,節(jié)省了查詢(xún)時(shí)間。圖2為本發(fā)明數(shù)據(jù)庫(kù)結(jié)果集緩存方法實(shí)施例二的流程圖。如圖2所示,在上述實(shí)施例的基礎(chǔ)上,在S101之前,本實(shí)施例提供的方法還可以包括:S201、對(duì)所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲(chǔ)在所述緩存區(qū)中。具體地,所述執(zhí)行計(jì)劃可以包括所述SQL查詢(xún)語(yǔ)句。在本實(shí)施例中,所述執(zhí)行計(jì)劃可以包括兩種工作狀態(tài),運(yùn)行狀態(tài)和睡眠狀態(tài),數(shù)據(jù)庫(kù)引擎在執(zhí)行完所述執(zhí)行計(jì)劃后,會(huì)將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),而不是直接結(jié)束所述執(zhí)行計(jì)劃,同時(shí)由于在緩存區(qū)中存儲(chǔ)了中間執(zhí)行結(jié)果和第一最終執(zhí)行結(jié)果,因此,若原始數(shù)據(jù)表發(fā)生改變,數(shù)據(jù)庫(kù)引擎可以喚醒之前設(shè)置為所述睡眠狀態(tài)的所述執(zhí)行計(jì)劃,即,使所述執(zhí)行計(jì)劃處于運(yùn)行狀態(tài),并在所述中間執(zhí)行結(jié)果以及改變后的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與改變后的原始數(shù)據(jù)表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中。本實(shí)施例提供的數(shù)據(jù)庫(kù)結(jié)果集緩存方法,通過(guò)在第一次執(zhí)行所述執(zhí)行計(jì)劃時(shí),獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲(chǔ)在所述緩存區(qū)中,使得后續(xù)若原始數(shù)據(jù)表發(fā)生改變,所述數(shù)據(jù)庫(kù)引擎可以喚醒所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果及改變后的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,并將得到的第二最終執(zhí)行結(jié)果存儲(chǔ)在所述緩存區(qū)中,在用戶(hù)再次發(fā)起相同的執(zhí)行計(jì)劃時(shí),可以直接從緩存區(qū)中獲取最終結(jié)果,而不用重新執(zhí)行整個(gè)執(zhí)行計(jì)劃,節(jié)省了查詢(xún)時(shí)間。下面以一個(gè)具體的實(shí)施例對(duì)數(shù)據(jù)庫(kù)結(jié)果集緩存方法進(jìn)行詳細(xì)說(shuō)明。圖3為本發(fā)明數(shù)據(jù)庫(kù)結(jié)果集緩存方法中客戶(hù)端的執(zhí)行計(jì)劃的示意圖。如圖3所示,在本實(shí)施例中,假設(shè)執(zhí)行計(jì)劃為對(duì)索引掃描(customer)表和全表掃描(sales)表進(jìn)行哈希連接(HashJoin)。本領(lǐng)域技術(shù)人員可知,HashJoin包括buildhash和hashjoin兩個(gè)步驟,其中,buildhash是針對(duì)customer表進(jìn)行的操作,而hashjoin是對(duì)customer表和sales表進(jìn)行的操作。buildhash的結(jié)果即為本實(shí)施例中所述的中間執(zhí)行結(jié)果,hashjoin的結(jié)果即為本實(shí)施例中所述的第一最終執(zhí)行結(jié)果,圖3中的結(jié)果集即為本實(shí)施例中所述的第一最終執(zhí)行結(jié)果或第二最終執(zhí)行結(jié)果。假設(shè)客戶(hù)端A第一次發(fā)起SQL查詢(xún)語(yǔ)句,數(shù)據(jù)庫(kù)引擎在接收到SQL查詢(xún)語(yǔ)句后,分析SQL語(yǔ)句文本,檢查緩存區(qū)中是否存在與該SQL語(yǔ)句文本的散列鍵值對(duì)應(yīng)的第一最終執(zhí)行結(jié)果,若存在,則數(shù)據(jù)庫(kù)引擎從緩存區(qū)中取出該第一最終執(zhí)行結(jié)果并返回給客戶(hù)端A;若不存在,則數(shù)據(jù)庫(kù)引擎執(zhí)行與所述SQL查詢(xún)語(yǔ)句對(duì)應(yīng)的執(zhí)行計(jì)劃,獲得所述執(zhí)行計(jì)劃的中間執(zhí)行結(jié)果和第一最終執(zhí)行結(jié)果,并將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲(chǔ)在所述緩存區(qū)中,向客戶(hù)端A返回第一最終執(zhí)行結(jié)果。若客戶(hù)端B向sales表中插入了一條記錄,數(shù)據(jù)庫(kù)引擎執(zhí)行完插入操作后,會(huì)判斷緩存區(qū)中是否存在所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,若存在,則喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,將該記錄上推至HashJoin的節(jié)點(diǎn)做hashjoin操作,而不需要重新進(jìn)行buildhash,也就是說(shuō),由于customer表沒(méi)有改變,即,buildhash的結(jié)果沒(méi)有改變,而由于對(duì)sales表進(jìn)行了插入操作,因此,只需要對(duì)customer表和sales表再次執(zhí)行hashjoin操作,以得到與插入了一條記錄的sales表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中。若客戶(hù)端A再次發(fā)起了相同的SQL查詢(xún)語(yǔ)句,則數(shù)據(jù)庫(kù)引擎可以直接從緩存區(qū)中獲取所述第二最終執(zhí)行結(jié)果返回給客戶(hù)端A。本實(shí)施例提供的方法,通過(guò)在原始數(shù)據(jù)表發(fā)生變化后,數(shù)據(jù)庫(kù)引擎判斷緩存區(qū)中是否存在相應(yīng)的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,若存在,則在所述中間執(zhí)行結(jié)果的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到第二最終執(zhí)行結(jié)果,在客戶(hù)端第二次發(fā)起相同的SQL查詢(xún)語(yǔ)句時(shí),可以直接從緩存區(qū)中獲取所述第二最終執(zhí)行結(jié)果返回給客戶(hù)端,節(jié)省了查詢(xún)時(shí)間。圖4為本發(fā)明數(shù)據(jù)庫(kù)引擎實(shí)施例一的結(jié)構(gòu)示意圖。如圖4所示,本實(shí)施例提供的數(shù)據(jù)庫(kù)引擎可以包括:接收模塊11,用于接收數(shù)據(jù)操縱語(yǔ)言DML語(yǔ)句,所述DML語(yǔ)句用于使所述數(shù)據(jù)庫(kù)引擎對(duì)原始數(shù)據(jù)表進(jìn)行DML操作;處理模塊12,用于執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲(chǔ)有之前對(duì)所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過(guò)DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過(guò)DML操作的原始數(shù)據(jù)表對(duì)應(yīng)的第二最終執(zhí)行結(jié)果并存儲(chǔ)在所述緩存區(qū)中。其中,所述處理模塊12具體可以用于立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;或,在滿足預(yù)設(shè)的觸發(fā)條件時(shí),喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。所述處理模塊12還可以用于對(duì)所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲(chǔ)在所述緩存區(qū)中。所述執(zhí)行計(jì)劃包括結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL查詢(xún)語(yǔ)句。本實(shí)施例提供的數(shù)據(jù)庫(kù)引擎,可用于執(zhí)行上述方法實(shí)施例的技術(shù)方案,其原理及技術(shù)效果類(lèi)似,此處不再贅述。本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。