本說明書涉及數(shù)據(jù)庫,尤其是涉及一種數(shù)據(jù)庫事務(wù)系統(tǒng)鎖競爭優(yōu)化方法及裝置。
背景技術(shù):
1、在數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)中,為保證事務(wù)的acid特性以及多版本并發(fā)控制,往往由一個(gè)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)(下稱“事務(wù)系統(tǒng)”)維護(hù)所有事務(wù)運(yùn)行的相關(guān)信息,例如活躍的事務(wù)序號(hào)、全局讀寫事務(wù)列表、最大事務(wù)序號(hào)等信息,并通過一個(gè)全局互斥鎖實(shí)現(xiàn)對事務(wù)系統(tǒng)資源的互斥訪問。在事務(wù)執(zhí)行的各個(gè)階段,如事務(wù)開啟、提交、rc隔離級(jí)別的快照讀,需要頻繁使用該全局互斥鎖,以實(shí)現(xiàn)對事務(wù)系統(tǒng)所維護(hù)的數(shù)據(jù)結(jié)構(gòu)的獨(dú)占訪問,而在高并發(fā)的業(yè)務(wù)場景下,由于并發(fā)事務(wù)對事務(wù)系統(tǒng)資源的頻繁訪問,使得用于保護(hù)事務(wù)系統(tǒng)的互斥鎖競爭成為性能瓶頸,一定程度上限制了數(shù)據(jù)庫對多核資源的利用效率。因此,亟需一種數(shù)據(jù)庫事務(wù)系統(tǒng)鎖競爭優(yōu)化方法,在保證事務(wù)acid特性以及多版本并發(fā)控制以及原有事務(wù)系統(tǒng)的相關(guān)功能與邏輯的正確性前提下,解決事務(wù)系統(tǒng)的全局互斥鎖成為數(shù)據(jù)庫在高并發(fā)場景下性能瓶頸的問題。
技術(shù)實(shí)現(xiàn)思路
1、鑒于目前在高并發(fā)的業(yè)務(wù)場景下,由于并發(fā)事務(wù)對事務(wù)系統(tǒng)資源的頻繁訪問,使得用于保護(hù)事務(wù)系統(tǒng)的互斥鎖競爭成為性能瓶頸,一定程度上限制了數(shù)據(jù)庫對多核資源的利用效率,提出了本方案以便克服上述問題或者至少部分地解決上述問題。
2、一方面,本說明書的一些實(shí)施例的目的在于提供一種數(shù)據(jù)庫事務(wù)系統(tǒng)鎖競爭優(yōu)化方法,所述方法包括:
3、獲取當(dāng)前全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集;
4、將所述全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集映射為哈希數(shù)據(jù)結(jié)構(gòu);
5、根據(jù)當(dāng)前數(shù)據(jù)庫的預(yù)估并發(fā)量確定哈希桶數(shù)量及哈希桶序號(hào),并根據(jù)所述哈希桶數(shù)量及哈希桶序號(hào),基于均衡拆分策略將全局活躍讀寫事務(wù)拆分至多個(gè)哈希桶;
6、利用每個(gè)哈希桶對應(yīng)的獨(dú)立互斥鎖對每個(gè)哈希桶的臨界資源進(jìn)行保護(hù)。
7、進(jìn)一步地,所述數(shù)據(jù)庫事務(wù)的隔離級(jí)別至少包括讀已提交級(jí)別。
8、進(jìn)一步地,將所述全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集映射為哈希數(shù)據(jù)結(jié)構(gòu),包括:
9、維持全局活躍讀寫事務(wù)列表與事務(wù)輔助索引集之間的索引關(guān)系不變,對所述全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集進(jìn)行哈希處理,得到具有索引關(guān)系的哈希數(shù)據(jù)結(jié)構(gòu)。
10、進(jìn)一步地,根據(jù)當(dāng)前數(shù)據(jù)庫的預(yù)估并發(fā)量確定哈希桶數(shù)量及哈希桶序號(hào),并根據(jù)所述哈希桶數(shù)量及哈希桶序號(hào),基于均衡拆分策略將全局活躍讀寫事務(wù)拆分至多個(gè)哈希桶,包括:
11、根據(jù)所述預(yù)估并發(fā)量所在區(qū)間確定哈希桶數(shù)量;
12、通過所述哈希桶數(shù)量確定哈希桶序號(hào);
13、將所述全局活躍讀寫事務(wù)除以所述哈希桶數(shù)量,以進(jìn)行取余運(yùn)算,得到取余結(jié)果;
14、根據(jù)所述取余結(jié)果確定每個(gè)活躍讀寫事務(wù)所對應(yīng)的哈希桶序號(hào),從而將所述全局活躍讀寫事務(wù)分配至多個(gè)哈希桶。
15、進(jìn)一步地,根據(jù)所述預(yù)估并發(fā)量所在區(qū)間確定哈希桶數(shù)量,包括:
16、獲取當(dāng)前數(shù)據(jù)庫的實(shí)際并發(fā)量區(qū)間;
17、根據(jù)預(yù)設(shè)的哈希桶數(shù)量匹配表,確定所述實(shí)際并發(fā)量區(qū)間對應(yīng)的哈希桶數(shù)量。
18、進(jìn)一步地,根據(jù)所述預(yù)估并發(fā)量所在區(qū)間確定哈希桶數(shù)量,進(jìn)一步包括:
19、獲取與當(dāng)前數(shù)據(jù)庫具有相同業(yè)務(wù)場景的數(shù)據(jù)庫的最大承載并發(fā)量、歷史實(shí)際并發(fā)量以及所述歷史實(shí)際并發(fā)量對應(yīng)的歷史網(wǎng)絡(luò)狀態(tài)和硬件配置;
20、建立歷史實(shí)際并發(fā)量與所述歷史網(wǎng)絡(luò)狀態(tài)和硬件配置以及所述最大承載并發(fā)量之間的回歸分析模型;
21、將當(dāng)前數(shù)據(jù)庫的網(wǎng)絡(luò)狀態(tài)及硬件配置以及最大承載并發(fā)量輸入至回歸分析模型中,得到當(dāng)前數(shù)據(jù)庫的預(yù)測并發(fā)量,以確定預(yù)測并發(fā)量區(qū)間;
22、利用所述預(yù)測并發(fā)量區(qū)間及實(shí)際并發(fā)量區(qū)間確定目標(biāo)并發(fā)量區(qū)間;所述實(shí)際并發(fā)量區(qū)間為所述目標(biāo)并發(fā)量區(qū)間的子集;
23、根據(jù)預(yù)設(shè)的哈希桶數(shù)量匹配表,確定所述目標(biāo)并發(fā)量區(qū)間對應(yīng)的哈希桶數(shù)量。
24、進(jìn)一步地,利用每個(gè)哈希桶對應(yīng)的獨(dú)立互斥鎖對每個(gè)哈希桶的臨界資源進(jìn)行保護(hù)后,進(jìn)一步包括:
25、根據(jù)所述哈希桶中全局活躍讀寫事務(wù)列表的變更,構(gòu)造基于時(shí)間序號(hào)的日志流;
26、根據(jù)預(yù)設(shè)時(shí)間周期獲取最新日志流,形成當(dāng)前時(shí)刻下的全局活躍讀寫事務(wù)列表的副本,響應(yīng)于讀視圖創(chuàng)建操作獲取最新日志流,形成讀視圖創(chuàng)建時(shí)刻下的全局活躍讀寫事務(wù)列表的副本,從而實(shí)現(xiàn)全局活躍讀寫事務(wù)快照。
27、另一方面,本說明書的一些實(shí)施例還提供一種數(shù)據(jù)庫事務(wù)系統(tǒng)鎖競爭優(yōu)化裝置,所述裝置包括:
28、獲取模塊,用于獲取當(dāng)前全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集;
29、映射模塊,用于將所述全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集映射為哈希數(shù)據(jù)結(jié)構(gòu);
30、拆分模塊,用于根據(jù)當(dāng)前數(shù)據(jù)庫的預(yù)估并發(fā)量確定哈希桶數(shù)量及哈希桶序號(hào),并根據(jù)所述哈希桶數(shù)量及哈希桶序號(hào),基于均衡拆分策略將全局活躍讀寫事務(wù)拆分至多個(gè)哈希桶;其中,每個(gè)哈希桶均具有一把獨(dú)立互斥鎖;
31、優(yōu)化模塊,用于利用每個(gè)哈希桶對應(yīng)的獨(dú)立互斥鎖對每個(gè)哈希桶的臨界資源進(jìn)行保護(hù)。
32、另一方面,本說明書的一些實(shí)施例還提供了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器、以及存儲(chǔ)在所述存儲(chǔ)器上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被所述處理器運(yùn)行時(shí),執(zhí)行上述方法的指令。
33、另一方面,本說明書的一些實(shí)施例還提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被計(jì)算機(jī)設(shè)備的處理器運(yùn)行時(shí),執(zhí)行上述方法的指令。
34、另一方面,本說明書的一些實(shí)施例還提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被計(jì)算機(jī)設(shè)備的處理器運(yùn)行時(shí),執(zhí)行上述方法的指令。
35、本說明書的一些實(shí)施例提供的一個(gè)或者多個(gè)技術(shù)方案,至少具有如下的技術(shù)效果:
36、本說明書的實(shí)施例首先自動(dòng)獲取當(dāng)前全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集,并對全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集進(jìn)行哈希處理,以便于對全局活躍讀寫事務(wù)進(jìn)行拆分,進(jìn)行拆分時(shí),根據(jù)當(dāng)前數(shù)據(jù)庫的預(yù)估并發(fā)量確定合適的哈希桶數(shù)量及哈希桶序號(hào),并根據(jù)哈希桶數(shù)量及哈希桶序號(hào)將全局活躍讀寫事務(wù)均衡地拆分至多個(gè)哈希桶,從而利用每個(gè)哈希桶對應(yīng)的獨(dú)立互斥鎖對每個(gè)哈希桶的臨界資源進(jìn)行保護(hù),實(shí)現(xiàn)對數(shù)據(jù)庫事務(wù)系統(tǒng)鎖的細(xì)粒度拆分,提高數(shù)據(jù)庫事務(wù)系統(tǒng)的處理吞吐量。
37、上述說明僅是本說明書的一些實(shí)施例技術(shù)方案的概述,為了能夠更清楚了解本說明書的一些實(shí)施例的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本說明書的一些實(shí)施例的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本說明書的一些實(shí)施例的具體實(shí)施方式。
1.一種數(shù)據(jù)庫事務(wù)系統(tǒng)鎖競爭優(yōu)化方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫事務(wù)的隔離級(jí)別至少包括讀已提交級(jí)別。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述全局活躍讀寫事務(wù)列表及事務(wù)輔助索引集映射為哈希數(shù)據(jù)結(jié)構(gòu),包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)當(dāng)前數(shù)據(jù)庫的預(yù)估并發(fā)量確定哈希桶數(shù)量及哈希桶序號(hào),并根據(jù)所述哈希桶數(shù)量及哈希桶序號(hào),基于均衡拆分策略將全局活躍讀寫事務(wù)拆分至多個(gè)哈希桶,包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,根據(jù)所述預(yù)估并發(fā)量所在區(qū)間確定哈希桶數(shù)量,包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,根據(jù)所述預(yù)估并發(fā)量所在區(qū)間確定哈希桶數(shù)量,進(jìn)一步包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,利用每個(gè)哈希桶對應(yīng)的獨(dú)立互斥鎖對每個(gè)哈希桶的臨界資源進(jìn)行保護(hù)后,進(jìn)一步包括:
8.一種數(shù)據(jù)庫事務(wù)系統(tǒng)鎖競爭優(yōu)化裝置,其特征在于,所述裝置包括:
9.一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器、以及存儲(chǔ)在所述存儲(chǔ)器上的計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被所述處理器運(yùn)行時(shí),執(zhí)行根據(jù)權(quán)利要求1-7任意一項(xiàng)所述方法的指令。
10.一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被計(jì)算機(jī)設(shè)備的處理器運(yùn)行時(shí),執(zhí)行根據(jù)權(quán)利要求1-7任意一項(xiàng)所述方法的指令。
11.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器運(yùn)行時(shí),執(zhí)行根據(jù)權(quán)利要求1-7任意一項(xiàng)所述方法的指令。