本說明書一個(gè)或多個(gè)實(shí)施例涉及數(shù)據(jù)庫,尤其涉及一種序列值緩存處理方法及相關(guān)設(shè)備。
背景技術(shù):
1、在數(shù)據(jù)庫技術(shù)中,針對(duì)數(shù)據(jù)表中的某個(gè)字段(通常為主鍵字段),每當(dāng)需要插入新的數(shù)據(jù)記錄到該數(shù)據(jù)表中時(shí),可以使用sequence(序列)自動(dòng)為該數(shù)據(jù)記錄中的該主鍵字段生成一個(gè)唯一的序列值,以利用序列值唯一標(biāo)識(shí)每行數(shù)據(jù)記錄,確保每行數(shù)據(jù)記錄的唯一性,以便于后續(xù)執(zhí)行數(shù)據(jù)查詢、更新和刪除等操作。
2、在分布式場(chǎng)景下,為了提升序列值的生成效率,分布式集群中的各個(gè)節(jié)點(diǎn)可以基于sequence參數(shù),先從分布式集群維護(hù)的內(nèi)部表中獲取從其記錄的基準(zhǔn)序列值開始連續(xù)(包括遞增或遞減)的多個(gè)序列值,然后將該多個(gè)序列值作為緩存加載至本地內(nèi)存中,后續(xù)各個(gè)節(jié)點(diǎn)便可以直接從各自的緩存中按序讀取序列值,以基于讀取出的序列值填充主鍵字段。
3、需要說明的是,任一節(jié)點(diǎn)在從內(nèi)部表中獲取到多個(gè)序列值后,都需要將該內(nèi)部表中的基準(zhǔn)序列值更新為在獲取到的多個(gè)序列值中的按指定方向最末端的序列值之后的下一個(gè)序列值,以便其他節(jié)點(diǎn)可以接著從內(nèi)部表中獲取從更新后的基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值,避免多個(gè)節(jié)點(diǎn)獲取到重復(fù)的序列值。
4、然而,一旦sequence參數(shù)被修改,將會(huì)導(dǎo)致各個(gè)節(jié)點(diǎn)的緩存和sequence參數(shù)不一致,進(jìn)而產(chǎn)生序列值空洞或者序列值重復(fù)等問題,嚴(yán)重影響數(shù)據(jù)庫性能,甚至造成正確性問題?;诖?,需要將各個(gè)節(jié)點(diǎn)中的本地緩存全部清空,然后各個(gè)節(jié)點(diǎn)再基于修改后的sequence參數(shù),重新從內(nèi)部表中獲取從當(dāng)前的基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值,從而造成了緩存中大量未使用的序列值的嚴(yán)重浪費(fèi)。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本說明書一個(gè)或多個(gè)實(shí)施例提供一種序列值緩存處理方法及相關(guān)設(shè)備。
2、第一方面,本說明書提供了一種序列值緩存處理方法,應(yīng)用于分布式集群中的調(diào)度節(jié)點(diǎn),所述分布式集群維護(hù)了目標(biāo)數(shù)據(jù)表和內(nèi)部表;所述內(nèi)部表中記錄了基準(zhǔn)序列值;所述分布式集群包含的各個(gè)節(jié)點(diǎn)的內(nèi)存中緩存了該節(jié)點(diǎn)基于預(yù)設(shè)的序列參數(shù),從所述內(nèi)部表中獲取到的從所述基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值;所述多個(gè)序列值用于按序填充所述目標(biāo)數(shù)據(jù)表中的目標(biāo)字段;
3、所述方法包括:
4、響應(yīng)于所述序列參數(shù)被修改,回收各個(gè)節(jié)點(diǎn)的內(nèi)存中包含的未使用緩存;其中,所述未使用緩存中包含還未被用于填充所述目標(biāo)字段的若干序列值;
5、從回收的多個(gè)未使用緩存中確定出包含的序列值最接近所述基準(zhǔn)序列值的目標(biāo)緩存;
6、將所述內(nèi)部表中的基準(zhǔn)序列值更新為所述目標(biāo)緩存中包含的若干序列值中的起始序列值,以使各個(gè)節(jié)點(diǎn)基于修改后的所述序列參數(shù),從所述內(nèi)部表中獲取從更新后的所述基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值,將所述多個(gè)序列值作為緩存加載至該節(jié)點(diǎn)的內(nèi)存中,并從所述緩存中按序讀取序列值,以基于讀取到的序列值填充所述目標(biāo)字段。
7、第二方面,本說明書提供了一種序列值緩存處理裝置,
8、應(yīng)用于分布式集群中的調(diào)度節(jié)點(diǎn),所述分布式集群維護(hù)了目標(biāo)數(shù)據(jù)表和內(nèi)部表;所述內(nèi)部表中記錄了基準(zhǔn)序列值;所述分布式集群包含的各個(gè)節(jié)點(diǎn)的內(nèi)存中緩存了該節(jié)點(diǎn)基于預(yù)設(shè)的序列參數(shù),從所述內(nèi)部表中獲取到的從所述基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值;所述多個(gè)序列值用于按序填充所述目標(biāo)數(shù)據(jù)表中的目標(biāo)字段;
9、所述裝置包括:
10、回收單元,用于響應(yīng)于所述序列參數(shù)被修改,回收各個(gè)節(jié)點(diǎn)的內(nèi)存中包含的未使用緩存;其中,所述未使用緩存中包含還未被用于填充所述目標(biāo)字段的若干序列值;
11、確定單元,用于從回收的多個(gè)未使用緩存中確定出包含的序列值最接近所述基準(zhǔn)序列值的目標(biāo)緩存;
12、更新單元,用于將所述內(nèi)部表中的基準(zhǔn)序列值更新為所述目標(biāo)緩存中包含的若干序列值中的起始序列值,以使各個(gè)節(jié)點(diǎn)基于修改后的所述序列參數(shù),從所述內(nèi)部表中獲取從更新后的所述基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值,將所述多個(gè)序列值作為緩存加載至該節(jié)點(diǎn)的內(nèi)存中,并從所述緩存中按序讀取序列值,以基于讀取到的序列值填充所述目標(biāo)字段。
13、相應(yīng)地,本說明書還提供了一種計(jì)算設(shè)備,包括:存儲(chǔ)器和處理器;所述存儲(chǔ)器上存儲(chǔ)有可由所述處理器運(yùn)行的計(jì)算機(jī)程序/指令;所述處理器運(yùn)行所述計(jì)算機(jī)程序/指令時(shí),執(zhí)行上述第一方面所述的序列值緩存處理方法。
14、相應(yīng)地,本說明書還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序/指令,所述計(jì)算機(jī)程序/指令被處理器運(yùn)行時(shí),執(zhí)行如上述第一方面所述的序列值緩存處理方法。
15、相應(yīng)地,本說明書還提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序/指令,所述計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí),執(zhí)行如上述第一方面所述的序列值緩存處理方法。
16、綜上所述,本申請(qǐng)可以應(yīng)用于分布式集群中的調(diào)度節(jié)點(diǎn),該分布式集群中維護(hù)了目標(biāo)數(shù)據(jù)表和內(nèi)部表;該內(nèi)部表中記錄了基準(zhǔn)序列值。分布式集群包含的各個(gè)節(jié)點(diǎn)的內(nèi)存中緩存了該節(jié)點(diǎn)基于預(yù)設(shè)的序列參數(shù),從內(nèi)部表中獲取到的從該基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值。相應(yīng)的,各個(gè)節(jié)點(diǎn)可以從緩存中按序讀取序列值,以基于讀取到的序列值填充目標(biāo)數(shù)據(jù)表中的目標(biāo)字段(例如主鍵字段)。在一示出的實(shí)施方式中,調(diào)度節(jié)點(diǎn)響應(yīng)于該序列參數(shù)被修改,可以回收各個(gè)節(jié)點(diǎn)的內(nèi)存中包含的未使用緩存;其中,未使用緩存中包含還未被用于填充目標(biāo)字段的若干序列值。進(jìn)一步地,調(diào)度節(jié)點(diǎn)可以從回收的多個(gè)未使用緩存中確定出包含的序列值最接近上述基準(zhǔn)序列值的目標(biāo)緩存。進(jìn)一步地,調(diào)度節(jié)點(diǎn)可以將內(nèi)部表中的基準(zhǔn)序列值更新為該目標(biāo)緩存中包含的若干序列值中的起始序列值,以使各個(gè)節(jié)點(diǎn)基于修改后的序列參數(shù),從內(nèi)部表中獲取從更新后的基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值,并將多個(gè)序列值作為緩存加載至該節(jié)點(diǎn)的內(nèi)存中,并從緩存中按序讀取序列值,以基于讀取到的序列值填充上述目標(biāo)字段。如此,當(dāng)序列參數(shù)發(fā)生修改后,調(diào)度節(jié)點(diǎn)先回收各個(gè)節(jié)點(diǎn)的內(nèi)存中的未使用緩存,并確定回收的多個(gè)未使用緩存中包含的序列值最接近基準(zhǔn)序列值的目標(biāo)緩存。應(yīng)理解,當(dāng)前內(nèi)部表的基準(zhǔn)序列值必然在該目標(biāo)緩存包含的末端序列值之后,但是該目標(biāo)緩存中的序列值都還未被使用,基于此,可以將當(dāng)前內(nèi)部表的基準(zhǔn)序列值更新為該目標(biāo)緩存中的起始序列值,即,將基準(zhǔn)序列值往前回滾到該目標(biāo)緩存中的起始序列值。如此,各個(gè)節(jié)點(diǎn)便可以從該更新后的基準(zhǔn)序列值開始獲取連續(xù)的多個(gè)序列值,等等,從而在避免各個(gè)節(jié)點(diǎn)獲取到重復(fù)序列值的前提下,盡可能減少序列值的浪費(fèi),提升數(shù)據(jù)庫性能。
1.一種序列值緩存處理方法,其特征在于,應(yīng)用于分布式集群中的調(diào)度節(jié)點(diǎn),所述分布式集群維護(hù)了目標(biāo)數(shù)據(jù)表和內(nèi)部表;所述內(nèi)部表中記錄了基準(zhǔn)序列值;所述分布式集群包含的各個(gè)節(jié)點(diǎn)的內(nèi)存中緩存了該節(jié)點(diǎn)基于預(yù)設(shè)的序列參數(shù),從所述內(nèi)部表中獲取到的從所述基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值;所述多個(gè)序列值用于按序填充所述目標(biāo)數(shù)據(jù)表中的目標(biāo)字段;
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述內(nèi)部表中的基準(zhǔn)序列值更新為所述目標(biāo)緩存中包含的若干序列值中的起始序列值,包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述未使用緩存包括已經(jīng)開始使用的緩存中包含的未使用的部分緩存,以及完整的未使用的預(yù)取緩存;
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述將所述內(nèi)部表中的基準(zhǔn)序列值更新為所述目標(biāo)緩存中包含的若干序列值中的起始序列值,包括:
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,各個(gè)節(jié)點(diǎn)上啟用了并行的多個(gè)工作線程,每個(gè)工作線程用于:
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,各個(gè)節(jié)點(diǎn)上的每個(gè)工作線程在搶占該節(jié)點(diǎn)的所述緩存鎖之前,先搶占預(yù)設(shè)的目標(biāo)鎖,響應(yīng)于所述目標(biāo)鎖搶占成功,進(jìn)一步搶占所述緩存鎖;以及,每個(gè)工作線程在釋放所述緩存鎖之后,進(jìn)一步釋放所述目標(biāo)鎖。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述回收各個(gè)節(jié)點(diǎn)的內(nèi)存中包含的未使用緩存,包括:
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述將所述內(nèi)部表中的基準(zhǔn)序列值更新為所述目標(biāo)緩存中包含的若干序列值中的起始序列值,包括:
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述序列參數(shù)包括:從所述緩存中按序讀取序列值的步長(zhǎng),以及所述緩存的規(guī)格;其中,所述緩存的規(guī)格包括按照所述步長(zhǎng),從所述緩存包含的所有序列值中按序讀取出的可用于填充所述目標(biāo)字段的序列值的數(shù)量;
12.根據(jù)權(quán)利要求1-11任意一項(xiàng)所述的方法,其特征在于,從所述基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值包括:從所述基準(zhǔn)序列值開始遞增的多個(gè)序列值;或者,從所述基準(zhǔn)序列值開始遞減的多個(gè)序列值。
13.一種序列值緩存處理裝置,其特征在于,應(yīng)用于分布式集群中的調(diào)度節(jié)點(diǎn),所述分布式集群維護(hù)了目標(biāo)數(shù)據(jù)表和內(nèi)部表;所述內(nèi)部表中記錄了基準(zhǔn)序列值;所述分布式集群包含的各個(gè)節(jié)點(diǎn)的內(nèi)存中緩存了該節(jié)點(diǎn)基于預(yù)設(shè)的序列參數(shù),從所述內(nèi)部表中獲取到的從所述基準(zhǔn)序列值開始連續(xù)的多個(gè)序列值;所述多個(gè)序列值用于按序填充所述目標(biāo)數(shù)據(jù)表中的目標(biāo)字段;
14.一種計(jì)算設(shè)備,其特征在于,包括:存儲(chǔ)器和處理器;所述存儲(chǔ)器上存儲(chǔ)有可由所述處理器運(yùn)行的計(jì)算機(jī)程序/指令;所述處理器運(yùn)行所述計(jì)算機(jī)程序/指令時(shí),執(zhí)行如權(quán)利要求1-12任意一項(xiàng)所述的方法。
15.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,其上存儲(chǔ)有計(jì)算機(jī)程序/指令,所述計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-12任意一項(xiàng)所述的方法。
16.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序/指令,所述計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-12任意一項(xiàng)所述的方法。