本發(fā)明涉及計(jì)算機(jī),尤其涉及一種數(shù)據(jù)庫表結(jié)構(gòu)修改方法及裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、很多數(shù)據(jù)庫系統(tǒng)的修改數(shù)據(jù)庫結(jié)構(gòu)操作與數(shù)據(jù)庫的讀寫操作都是互斥的,并且在修改數(shù)據(jù)庫結(jié)構(gòu)之后所有舊數(shù)據(jù)都要遷移到新的結(jié)構(gòu)中,在一段時(shí)間內(nèi)造成大量的性能消耗。所以目前多數(shù)數(shù)據(jù)庫系統(tǒng)管理員修改數(shù)據(jù)庫結(jié)構(gòu)只能在夜晚或者業(yè)務(wù)量非常少的情況下才能進(jìn)行。
2、因此需要一種修改數(shù)據(jù)庫結(jié)構(gòu)時(shí)數(shù)據(jù)庫的讀寫操作同樣可以繼續(xù)進(jìn)行,既要保證數(shù)據(jù)庫的可用,又要保證數(shù)據(jù)的一致性的方法。
技術(shù)實(shí)現(xiàn)思路
1、鑒于上述問題,本發(fā)明提供了一種數(shù)據(jù)庫運(yùn)行狀態(tài)確定方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
2、根據(jù)本發(fā)明的第一個(gè)方面,提供了一種數(shù)據(jù)庫表結(jié)構(gòu)修改方法,包括:響應(yīng)于對原數(shù)據(jù)庫表結(jié)構(gòu)的修改指令,根據(jù)第一數(shù)據(jù)組和第二數(shù)據(jù)組構(gòu)建第一目標(biāo)數(shù)據(jù)表,第一數(shù)據(jù)組包括在修改之前,原數(shù)據(jù)庫表中的基礎(chǔ)數(shù)據(jù),第二數(shù)據(jù)組包括在修改過程中,在原數(shù)據(jù)庫表中產(chǎn)生的增量數(shù)據(jù),其中,第一目標(biāo)數(shù)據(jù)表和原數(shù)據(jù)庫表的表結(jié)構(gòu)不同;在檢測到對第一目標(biāo)數(shù)據(jù)表的讀操作的情況下,對第一目標(biāo)數(shù)據(jù)表添加第一鎖,和/或在第二數(shù)據(jù)組的數(shù)據(jù)量滿足預(yù)設(shè)數(shù)值條件的情況下,對第一目標(biāo)數(shù)據(jù)表添加第二鎖;對添加第一鎖和/或第二鎖的第一目標(biāo)數(shù)據(jù)表中的元數(shù)據(jù)進(jìn)行修改,得到第二目標(biāo)數(shù)據(jù)表。
3、可選地,第一目標(biāo)數(shù)據(jù)表包括第一鎖、第二鎖和除第一鎖第二鎖以外的其他多個(gè)鎖;第一鎖與第二鎖互斥,第一鎖與其他多個(gè)鎖共存;第二鎖與第一鎖、其他多個(gè)鎖互斥。
4、可選地,第一鎖為多版本共享鎖,第二鎖為多版本獨(dú)占鎖。
5、可選地,第一數(shù)據(jù)組中包括原數(shù)據(jù)庫表中基礎(chǔ)數(shù)據(jù)的前像數(shù)據(jù),前像數(shù)據(jù)的生成響應(yīng)于對原數(shù)據(jù)庫表結(jié)構(gòu)修改的操作。
6、可選地,根據(jù)第一數(shù)據(jù)組和第二數(shù)據(jù)組構(gòu)建第一目標(biāo)數(shù)據(jù)表包括:根據(jù)用戶預(yù)設(shè)的修改目標(biāo)構(gòu)建具有與原數(shù)據(jù)庫表的表結(jié)構(gòu)不同的第三目標(biāo)數(shù)據(jù)表,其中第三目標(biāo)數(shù)據(jù)表不具有任何數(shù)據(jù)行;根據(jù)第一數(shù)據(jù)組和第三目標(biāo)數(shù)據(jù)表構(gòu)建基礎(chǔ)目標(biāo)數(shù)據(jù)表;根據(jù)第二數(shù)據(jù)組和對應(yīng)的增量數(shù)據(jù)操作日志在基礎(chǔ)目標(biāo)數(shù)據(jù)表的基礎(chǔ)上構(gòu)建第一目標(biāo)數(shù)據(jù)表。
7、可選地,預(yù)設(shè)數(shù)值條件包括對應(yīng)的增量數(shù)據(jù)操作日志的數(shù)量小于或等于5個(gè)。
8、本發(fā)明的第二個(gè)方面提供了一種數(shù)據(jù)庫表結(jié)構(gòu)修改裝置,包括:構(gòu)建模塊,用于響應(yīng)于對原數(shù)據(jù)庫表結(jié)構(gòu)的修改指令,根據(jù)第一數(shù)據(jù)組和第二數(shù)據(jù)組構(gòu)建第一目標(biāo)數(shù)據(jù)表,第一數(shù)據(jù)組包括在修改之前,原數(shù)據(jù)庫表中的基礎(chǔ)數(shù)據(jù),第二數(shù)據(jù)組包括在修改過程中,在原數(shù)據(jù)庫表中產(chǎn)生的增量數(shù)據(jù),其中,第一目標(biāo)數(shù)據(jù)表和原數(shù)據(jù)庫表的表結(jié)構(gòu)不同;加鎖模塊,用于在檢測到對第一目標(biāo)數(shù)據(jù)表的讀操作的情況下,對第一目標(biāo)數(shù)據(jù)表添加第一鎖,和/或在第二數(shù)據(jù)組的數(shù)據(jù)量滿足預(yù)設(shè)數(shù)值條件的情況下,對第一目標(biāo)數(shù)據(jù)表添加第二鎖;修改模塊,用于對添加第一鎖和/或第二鎖的第一目標(biāo)數(shù)據(jù)表中的元數(shù)據(jù)進(jìn)行修改,得到第二目標(biāo)數(shù)據(jù)表。
9、本發(fā)明的第三方面提供了一種電子設(shè)備,包括:一個(gè)或多個(gè)處理器;存儲(chǔ)器,用于存儲(chǔ)一個(gè)或多個(gè)計(jì)算機(jī)程序,其中,上述一個(gè)或多個(gè)處理器執(zhí)行上述一個(gè)或多個(gè)計(jì)算機(jī)程序以實(shí)現(xiàn)上述方法的步驟。
10、本發(fā)明的第四方面還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序或指令,上述計(jì)算機(jī)程序或指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述方法的步驟。
11、本發(fā)明的第五方面還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序或指令,上述計(jì)算機(jī)程序或指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述方法的步驟。
12、本發(fā)明通過在第一目標(biāo)數(shù)據(jù)表上添加第一鎖和第二鎖,可以防止在數(shù)據(jù)遷移和修改過程中發(fā)生數(shù)據(jù)不一致的情況,確保數(shù)據(jù)的完整性和準(zhǔn)確性。通過預(yù)設(shè)數(shù)值條件來決定何時(shí)添加第二鎖,即何時(shí)開始修改元數(shù)據(jù),可以根據(jù)系統(tǒng)的負(fù)載和性能要求靈活調(diào)整,以適應(yīng)不同的工作負(fù)載,同時(shí)將整個(gè)元數(shù)據(jù)的修改過程控制在毫秒、秒水平,降低在線修改數(shù)據(jù)庫表結(jié)構(gòu)造成的數(shù)據(jù)庫性能抖動(dòng)。當(dāng)數(shù)據(jù)庫結(jié)構(gòu)修改到最后步驟時(shí)使用新添加鎖類型對元數(shù)據(jù)信息獨(dú)占直到數(shù)據(jù)庫結(jié)構(gòu)操作事務(wù)提交,保證了數(shù)據(jù)讀取的一致性。
1.一種數(shù)據(jù)庫表結(jié)構(gòu)修改方法,其特征在于,所述數(shù)據(jù)庫表結(jié)構(gòu)修改方法包括:
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫表結(jié)構(gòu)修改方法,其特征在于,所述第一目標(biāo)數(shù)據(jù)表包括第一鎖、第二鎖和除第一鎖、第二鎖以外的其他多個(gè)鎖;
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫表結(jié)構(gòu)修改方法,其特征在于,
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫表結(jié)構(gòu)修改方法,其特征在于,
5.根據(jù)權(quán)利要求1或4所述的數(shù)據(jù)庫表結(jié)構(gòu)修改方法,其特征在于,所述根據(jù)第一數(shù)據(jù)組和第二數(shù)據(jù)組構(gòu)建第一目標(biāo)數(shù)據(jù)表包括:
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)庫表結(jié)構(gòu)修改方法,其特征在于,
7.一種數(shù)據(jù)庫表結(jié)構(gòu)修改裝置,其特征在于,所述數(shù)據(jù)庫表結(jié)構(gòu)修改裝置包括:
8.一種電子設(shè)備,包括:
9.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有可執(zhí)行指令,其特征在于,該指令被處理器執(zhí)行時(shí)使處理器實(shí)現(xiàn)權(quán)利要求1~6中任一項(xiàng)所述的數(shù)據(jù)庫表結(jié)構(gòu)修改方法。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序在被處理器執(zhí)行時(shí)實(shí)現(xiàn)根據(jù)權(quán)利要求1~6中任一項(xiàng)所述的數(shù)據(jù)庫表結(jié)構(gòu)修改方法。