本技術(shù)涉及計(jì)算機(jī),尤其涉及一種數(shù)據(jù)緩存方法以及計(jì)算設(shè)備。
背景技術(shù):
1、本領(lǐng)域中,計(jì)算設(shè)備會(huì)采用混合內(nèi)存技術(shù)提升其性能。例如,計(jì)算設(shè)備可以采用易失性存儲(chǔ)器(random?access?memory,ram)和持久性存儲(chǔ)器(persistent?memory,pmem)組合的混合內(nèi)存。其中,ram中會(huì)緩存pmem存儲(chǔ)的一部分?jǐn)?shù)據(jù)。
2、在計(jì)算設(shè)備采用數(shù)據(jù)庫(kù)系統(tǒng)對(duì)的數(shù)據(jù)進(jìn)行組織和管理的情況下,計(jì)算設(shè)備會(huì)存儲(chǔ)不同模式的數(shù)據(jù)。計(jì)算設(shè)備上運(yùn)行的應(yīng)用程序基于數(shù)據(jù)庫(kù)的模式(schema)訪(fǎng)問(wèn)混合內(nèi)存,從而得到需要的數(shù)據(jù)。在相關(guān)技術(shù)中,應(yīng)用程序從ram中獲取數(shù)據(jù)的效率較低,嚴(yán)重影響用戶(hù)的體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供了一種數(shù)據(jù)緩存方法以及計(jì)算設(shè)備,按照數(shù)據(jù)的模式緩存數(shù)據(jù)并對(duì)不同模式的數(shù)據(jù)進(jìn)行分區(qū)管理,可以提高查詢(xún)數(shù)據(jù)的效率。
2、第一方面,本技術(shù)提供了一種數(shù)據(jù)緩存方法。該方法可以應(yīng)用于包括混合內(nèi)存的計(jì)算設(shè)備,混合內(nèi)存包括易失性存儲(chǔ)器和持久性存儲(chǔ)器,所述持久性存儲(chǔ)器存儲(chǔ)有多個(gè)模式對(duì)應(yīng)的數(shù)據(jù)。該方法包括:
3、接收數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求,所述數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求中包括第一數(shù)據(jù)的標(biāo)識(shí)和第一字段的標(biāo)識(shí),所述第一數(shù)據(jù)包括多個(gè)字段的值,所述多個(gè)字段包括所述第一字段,所述多個(gè)模式對(duì)應(yīng)的數(shù)據(jù)包括所述第一數(shù)據(jù),所述第一數(shù)據(jù)對(duì)應(yīng)所述多個(gè)模式中的第一模式;
4、在確定從所述持久性存儲(chǔ)器讀取所述第一數(shù)據(jù)的情況下,根據(jù)所述第一數(shù)據(jù)的標(biāo)識(shí)從所述持久性存儲(chǔ)器讀取所述第一數(shù)據(jù),根據(jù)所述第一字段的標(biāo)識(shí)從所述第一數(shù)據(jù)中提取所述第一字段的值,以及發(fā)送所述第一字段的值;
5、在確定緩存所述第一數(shù)據(jù)的情況下,將所述第一數(shù)據(jù)寫(xiě)入所述易失性存儲(chǔ)器中所述第一模式對(duì)應(yīng)的一個(gè)數(shù)據(jù)頁(yè),所述易失性存儲(chǔ)器中包括所述多個(gè)模式中各個(gè)模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè),所述各個(gè)模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)按第一數(shù)據(jù)結(jié)構(gòu)組織。
6、上述方案中,在易失性存儲(chǔ)器中使用不同模式對(duì)應(yīng)的數(shù)據(jù)頁(yè)存儲(chǔ)不同模式的數(shù)據(jù),通過(guò)對(duì)不同模式的數(shù)據(jù)進(jìn)行分區(qū)管理,可以提高易失性存儲(chǔ)器的空間管理效率,從而在計(jì)算設(shè)備的應(yīng)用程序基于模式訪(fǎng)問(wèn)數(shù)據(jù)的情況下,節(jié)省從易失性存儲(chǔ)器獲取已緩存的數(shù)據(jù)的效率。
7、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述方法還包括:根據(jù)所述第一模式的訪(fǎng)問(wèn)信息確定是否緩存所述第一數(shù)據(jù)。如果應(yīng)用程序訪(fǎng)問(wèn)的數(shù)據(jù)未命中ram已緩存的數(shù)據(jù),則需要從pmem讀取數(shù)據(jù)。ram的命中率較低,意味著較多的數(shù)據(jù)需要從pmem讀取。相對(duì)于pmem,ram具有讀寫(xiě)時(shí)延優(yōu)勢(shì)。如果訪(fǎng)問(wèn)pmem獲取數(shù)據(jù),會(huì)增大應(yīng)用程序獲取數(shù)據(jù)的時(shí)間,嚴(yán)重影響用戶(hù)的體驗(yàn)。因此,根據(jù)模式的訪(fǎng)問(wèn)信息確定是否緩存該數(shù)據(jù),可以提高ram的命中率,從而減少?gòu)膒mem獲取數(shù)據(jù)的次數(shù),提高用戶(hù)體驗(yàn)。
8、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述根據(jù)所述第一數(shù)據(jù)對(duì)應(yīng)的第一模式的訪(fǎng)問(wèn)信息確定是否緩存所述第一數(shù)據(jù)包括:根據(jù)所述第一模式的訪(fǎng)問(wèn)信息確定所述第一模式在目標(biāo)時(shí)段的訪(fǎng)問(wèn)率;若所述第一模式在目標(biāo)時(shí)段的訪(fǎng)問(wèn)率等于或大于訪(fǎng)問(wèn)率閾值,確定緩存所述第一數(shù)據(jù);若所述第一模式在所述目標(biāo)時(shí)段的訪(fǎng)問(wèn)率小于所述訪(fǎng)問(wèn)率閾值,確定不緩存所述第一數(shù)據(jù)。
9、上述方案中,根據(jù)數(shù)據(jù)的模式對(duì)應(yīng)的訪(fǎng)問(wèn)率確定是否將該數(shù)據(jù)緩存至易失性存儲(chǔ)器,可以在計(jì)算設(shè)備的應(yīng)用程序基于模式訪(fǎng)問(wèn)數(shù)據(jù)的情況下,提高應(yīng)用程序獲取的數(shù)據(jù)在易失性存儲(chǔ)器的命中率。
10、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述根據(jù)所述第一模式的訪(fǎng)問(wèn)信息確定是否緩存所述第一數(shù)據(jù)包括:根據(jù)所述第一模式的訪(fǎng)問(wèn)信息確定所述第一模式在目標(biāo)時(shí)段的訪(fǎng)問(wèn)率;在所述第一模式在目標(biāo)時(shí)段的訪(fǎng)問(wèn)率等于或大于第一閾值的情況下,確定將所述第一數(shù)據(jù)寫(xiě)入所述易失性存儲(chǔ)器。
11、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述將所述第一數(shù)據(jù)寫(xiě)入所述易失性存儲(chǔ)器中所述第一模式對(duì)應(yīng)的一個(gè)數(shù)據(jù)頁(yè),包括:在所述第一模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)中存在第一數(shù)據(jù)頁(yè)、且所述第一數(shù)據(jù)頁(yè)存在空白行的情況下,將所述第一數(shù)據(jù)寫(xiě)入所述第一數(shù)據(jù)頁(yè)的空白行,其中,所述第一數(shù)據(jù)頁(yè)中存儲(chǔ)有第二數(shù)據(jù),所述第一數(shù)據(jù)的標(biāo)識(shí)與所述第二數(shù)據(jù)的標(biāo)識(shí)在所述第一模式對(duì)應(yīng)的索引中的距離小于或等于距離閾值;在所述第一模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)中不存在所述第一數(shù)據(jù)頁(yè)、或者所述第一數(shù)據(jù)頁(yè)不存在空白行的情況下,將所述第一數(shù)據(jù)寫(xiě)入所述第一模式對(duì)應(yīng)的第二數(shù)據(jù)頁(yè)的空白行。
12、上述方案中,在將數(shù)據(jù)寫(xiě)入易失性存儲(chǔ)器時(shí),將其寫(xiě)入與其相鄰數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)頁(yè),可以進(jìn)一步提高獲取數(shù)據(jù)的效率。相鄰數(shù)據(jù)被稍后訪(fǎng)問(wèn)的概率更高,將相鄰數(shù)據(jù)寫(xiě)入同一數(shù)據(jù)頁(yè),可以提高命中率,從而提高獲取數(shù)據(jù)的效率。
13、結(jié)合第一方面,在一種可能的實(shí)施方式中,在將所述第一數(shù)據(jù)寫(xiě)入所述第一模式對(duì)應(yīng)的第二數(shù)據(jù)頁(yè)的空白行之前,所述方法還包括:根據(jù)所述第一模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)中各個(gè)數(shù)據(jù)頁(yè)的元數(shù)據(jù)確定所述第二數(shù)據(jù)頁(yè)。其中,數(shù)據(jù)頁(yè)的元數(shù)據(jù)包括表示該數(shù)據(jù)頁(yè)中的各個(gè)行是否存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)信息。
14、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述方法還包括:確定所述易失性存儲(chǔ)器中未使用的數(shù)據(jù)頁(yè)的數(shù)量;若所述數(shù)量等于或小于數(shù)量閾值,根據(jù)所述多個(gè)模式中各個(gè)模式在所述目標(biāo)時(shí)段的訪(fǎng)問(wèn)率確定所述多個(gè)模式中的目標(biāo)模式,刪除所述目標(biāo)模式對(duì)應(yīng)的數(shù)據(jù)頁(yè)鏈表中各個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)的第三數(shù)據(jù),所述第三數(shù)據(jù)的生命周期大于所述目標(biāo)模式對(duì)應(yīng)的生命周期閾值。,其中,所述目標(biāo)模式對(duì)應(yīng)的生命周期閾值根據(jù)所述目標(biāo)模式在所述目標(biāo)時(shí)段的訪(fǎng)問(wèn)率和所述目標(biāo)模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)的行占用率確定。
15、上述方案中,根據(jù)各個(gè)模式的訪(fǎng)問(wèn)率和各個(gè)模式已緩存的數(shù)據(jù)在易失性存儲(chǔ)器中的生命周期淘汰數(shù)據(jù),可以節(jié)省器存儲(chǔ)空間且提高易失性存儲(chǔ)器的空間管理效率,同時(shí),還可以保證易失性存儲(chǔ)器的命中率。
16、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述方法還包括:根據(jù)所述第一數(shù)據(jù)的標(biāo)識(shí)查詢(xún)所述第一模式對(duì)應(yīng)的索引,獲得所述第一數(shù)據(jù)的位置信息:
17、根據(jù)所述第一數(shù)據(jù)的位置信息確定是否從所述持久性存儲(chǔ)器讀取第一數(shù)據(jù)。其中,索引可以采用哈希表或b樹(shù)等數(shù)據(jù)結(jié)構(gòu)。
18、上述方案中,建立不同模式的索引,可以提高查詢(xún)索引獲得數(shù)據(jù)的位置的效率。
19、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述根據(jù)所述第一字段的標(biāo)識(shí)從所述第一數(shù)據(jù)中提取所述第一字段的值包括:根據(jù)所述第一字段的標(biāo)識(shí)和所述多個(gè)字段中各個(gè)字段的長(zhǎng)度,從所述第一數(shù)據(jù)中提取所述第一字段的值,以及發(fā)送所述第一字段的值。
20、上述方案中,可以使計(jì)算設(shè)備運(yùn)行的應(yīng)用程序?qū)崿F(xiàn)訪(fǎng)問(wèn)數(shù)據(jù)的部分字段的功能。相關(guān)技術(shù)中,應(yīng)用程序獲得完整數(shù)據(jù)后,需要解析數(shù)據(jù)才能獲得其中部分字段的值。該方案可以縮短應(yīng)用程序獲取部分字段值的時(shí)間,提高用戶(hù)體驗(yàn)。
21、結(jié)合第一方面,在一種可能的實(shí)施方式中,所述方法還包括:更新所述第一模式對(duì)應(yīng)的索引中所述第一數(shù)據(jù)的位置信息,更新后的所述第一數(shù)據(jù)的位置信息指示所述第一數(shù)據(jù)存儲(chǔ)于所述易失性存儲(chǔ)器。
22、第二方面,本技術(shù)還提供一種數(shù)據(jù)緩存裝置。該裝置可以應(yīng)用于包括混合內(nèi)存的計(jì)算設(shè)備,所述混合內(nèi)存包括易失性存儲(chǔ)器和持久性存儲(chǔ)器,所述裝置包括:訪(fǎng)問(wèn)模塊和緩存模塊。
23、其中,訪(fǎng)問(wèn)模塊用于接收數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求,所述數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求中包括第一數(shù)據(jù)的標(biāo)識(shí)和第一字段的標(biāo)識(shí),所述第一數(shù)據(jù)包括多個(gè)字段的值,所述多個(gè)字段包括所述第一字段,所述多個(gè)模式對(duì)應(yīng)的數(shù)據(jù)包括所述第一數(shù)據(jù),所述第一數(shù)據(jù)對(duì)應(yīng)所述多個(gè)模式中的第一模式;
24、其中,訪(fǎng)問(wèn)模塊還用于在確定從所述持久性存儲(chǔ)器讀取所述第一數(shù)據(jù)的情況下,根據(jù)所述第一數(shù)據(jù)的標(biāo)識(shí)從所述持久性存儲(chǔ)器讀取所述第一數(shù)據(jù),根據(jù)所述第一字段的標(biāo)識(shí)從所述第一數(shù)據(jù)中提取所述第一字段的值,以及發(fā)送所述第一字段的值。
25、其中,緩存模塊用于在確定緩存所述第一數(shù)據(jù)的情況下,將所述第一數(shù)據(jù)寫(xiě)入所述易失性存儲(chǔ)器中所述第一模式對(duì)應(yīng)的一個(gè)數(shù)據(jù)頁(yè),所述易失性存儲(chǔ)器中包括所述多個(gè)模式中各個(gè)模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè),所述各個(gè)模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)按第一數(shù)據(jù)結(jié)構(gòu)組織。
26、結(jié)合第二方面,在一種可能的實(shí)施方式中,所述緩存模塊還用于:根據(jù)所述第一模式的訪(fǎng)問(wèn)信息確定是否緩存所述第一數(shù)據(jù)。
27、結(jié)合第二方面,在一種可能的實(shí)施方式中,所述緩存模塊具體用于:根據(jù)所述第一模式的訪(fǎng)問(wèn)信息確定所述第一模式在目標(biāo)時(shí)段的訪(fǎng)問(wèn)率;若所述第一模式在目標(biāo)時(shí)段的訪(fǎng)問(wèn)率等于或大于訪(fǎng)問(wèn)率閾值,確定緩存所述第一數(shù)據(jù);若所述第一模式在所述目標(biāo)時(shí)段的訪(fǎng)問(wèn)率小于所述訪(fǎng)問(wèn)率閾值,確定不緩存所述第一數(shù)據(jù)。
28、結(jié)合第二方面,在一種可能的實(shí)施方式中,所述緩存模塊具體用于:在所述第一模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)中存在第一數(shù)據(jù)頁(yè)、且所述第一數(shù)據(jù)頁(yè)存在空白行的情況下,將所述第一數(shù)據(jù)寫(xiě)入所述第一數(shù)據(jù)頁(yè)的空白行,其中,所述第一數(shù)據(jù)頁(yè)中存儲(chǔ)有第二數(shù)據(jù),所述第一數(shù)據(jù)的標(biāo)識(shí)與所述第二數(shù)據(jù)的標(biāo)識(shí)在所述第一模式對(duì)應(yīng)的索引中的距離小于或等于距離閾值;在所述第一模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)中不存在所述第一數(shù)據(jù)頁(yè)、或者所述第一數(shù)據(jù)頁(yè)不存在空白行的情況下,將所述第一數(shù)據(jù)寫(xiě)入所述第一模式對(duì)應(yīng)的第二數(shù)據(jù)頁(yè)的空白行。
29、結(jié)合第二方面,在一種可能的實(shí)施方式中,所述緩存模塊還用于:根據(jù)所述第一模式對(duì)應(yīng)的多個(gè)數(shù)據(jù)頁(yè)中各個(gè)數(shù)據(jù)頁(yè)的元數(shù)據(jù)確定所述第二數(shù)據(jù)頁(yè)。
30、結(jié)合第二方面,在一種可能的實(shí)施方式中,在將所述第一數(shù)據(jù)寫(xiě)入所述易失性存儲(chǔ)器中所述第一模式對(duì)應(yīng)的一個(gè)數(shù)據(jù)頁(yè)之后,所述緩存模塊還用于:確定所述易失性存儲(chǔ)器中未使用的數(shù)據(jù)頁(yè)的數(shù)量;若所述數(shù)量等于或小于數(shù)量閾值,根據(jù)所述多個(gè)模式中各個(gè)模式在所述目標(biāo)時(shí)段的訪(fǎng)問(wèn)率確定所述多個(gè)模式中的目標(biāo)模式,刪除所述目標(biāo)模式對(duì)應(yīng)的數(shù)據(jù)頁(yè)鏈表中各個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)的第三數(shù)據(jù),所述第三數(shù)據(jù)的生命周期大于所述目標(biāo)模式對(duì)應(yīng)的生命周期閾值。
31、結(jié)合第二方面,在一種可能的實(shí)施方式中,所述訪(fǎng)問(wèn)模塊還用于:根據(jù)所述第一數(shù)據(jù)的標(biāo)識(shí)查詢(xún)所述第一模式對(duì)應(yīng)的索引,獲得所述第一數(shù)據(jù)的位置信息;根據(jù)所述第一數(shù)據(jù)的位置信息確定是否從所述持久性存儲(chǔ)器讀取第一數(shù)據(jù)。
32、結(jié)合第二方面,在一種可能的實(shí)施方式中,所述訪(fǎng)問(wèn)模塊還用于:根據(jù)所述第一字段的標(biāo)識(shí)和所述多個(gè)字段中各個(gè)字段的長(zhǎng)度,從所述第一數(shù)據(jù)中提取所述第一字段的值,以及發(fā)送所述第一字段的值。
33、結(jié)合第二方面,在一種可能的實(shí)施方式中,所述緩存模塊還用于:更新所述第一模式對(duì)應(yīng)的索引中所述第一數(shù)據(jù)的位置信息,更新后的所述第一數(shù)據(jù)的位置信息指示所述第一數(shù)據(jù)存儲(chǔ)于所述易失性存儲(chǔ)器。
34、第三方面,本技術(shù)還提供一種計(jì)算設(shè)備。該計(jì)算設(shè)備包括:處理器和存儲(chǔ)器,所述處理器用于執(zhí)行存儲(chǔ)于所述存儲(chǔ)器內(nèi)的計(jì)算機(jī)程序以實(shí)現(xiàn)第一方面或者第一方面的任意一種可選實(shí)施方式中的方法。
35、第四方面,本技術(shù)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,包括指令,當(dāng)所述指令在計(jì)算機(jī)上運(yùn)行時(shí),使得所述計(jì)算機(jī)實(shí)現(xiàn)第一方面或者第一方面的任意一種可選實(shí)施方式中的方法。
36、第五方面,本技術(shù)還提供一種包含指令的計(jì)算機(jī)程序產(chǎn)品,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)實(shí)現(xiàn)第一方面或者第一方面的任意一種可選實(shí)施方式中的方法。
37、上述提供的任一種裝置或計(jì)算設(shè)備或計(jì)算機(jī)存儲(chǔ)介質(zhì)或計(jì)算機(jī)程序產(chǎn)品,均用于執(zhí)行上文所提供的方法,因此,其所能達(dá)到的有益效果可參考上文提供的對(duì)應(yīng)方法中的對(duì)應(yīng)方案的有益效果,此處不再贅述。