本申請屬于數(shù)據(jù)庫,更具體地,涉及一種基于數(shù)據(jù)庫分布式通信的連接復用方法及裝置。
背景技術(shù):
1、數(shù)據(jù)庫分布式通信系統(tǒng)旨在處理多節(jié)點數(shù)據(jù)庫集群中的數(shù)據(jù)交互和同步,這些系統(tǒng)通過網(wǎng)絡(luò)連接多個數(shù)據(jù)庫實例,實現(xiàn)數(shù)據(jù)的分布式存儲和管理。
2、目前在管理數(shù)據(jù)庫分布式通信連接時,通常依據(jù)會話生命周期來進行連接管理。這種方式可能導致數(shù)據(jù)庫分布式通信連接的利用率不高,尤其是在高并發(fā)場景下,連接的創(chuàng)建和銷毀可能造成資源浪費。
3、由于連接利用不充分,可能導致在高并發(fā)環(huán)境下,數(shù)據(jù)庫連接資源被固定且不能有效共享,會限制數(shù)據(jù)庫的并發(fā)處理能力,還可能導致讀寫性能下降,即系統(tǒng)總體的運行效率較低。
4、因此,如何提高連接利用率來提升系統(tǒng)的運行效率,是當前亟需解決的技術(shù)問題。
技術(shù)實現(xiàn)思路
1、針對現(xiàn)有技術(shù)的缺陷,本申請的目的在于提供一種基于數(shù)據(jù)庫分布式通信的連接復用方法及裝置,旨在解決因數(shù)據(jù)庫連接利用不充分導致系統(tǒng)運行效率低的問題。
2、本申請?zhí)峁┮环N基于數(shù)據(jù)庫分布式通信的連接復用方法,包括:
3、接收業(yè)務(wù)組件的sql請求,基于所述sql請求開啟事務(wù);
4、若當前sql語句為開始事務(wù)語句,從連接池緩存中查找并確定匹配成功的第一連接槽,并從連接池緩存中取走所述第一連接槽,根據(jù)所述第一連接槽執(zhí)行當前sql語句;
5、循環(huán)執(zhí)行事務(wù)中的后續(xù)sql語句,直至當前的sql語句為提交語句或回滾語句時結(jié)束事務(wù),更新連接槽的引用計數(shù),并根據(jù)引用計數(shù)將連接槽歸還連接池或繼續(xù)保留在連接池緩存中;
6、當全部sql語句執(zhí)行完成時,將所述連接槽歸還給連接池。
7、可選地,還包括:
8、若當前sql語句不是開始事務(wù)語句,根據(jù)數(shù)據(jù)庫名從連接池的字典中查找與連接池匹配的連接槽作為第二連接槽;
9、從所述連接池中取走第二連接槽,將所述第二連接槽賦給連接代理,以基于第二連接槽執(zhí)行所述sql請求。
10、可選地,還包括:
11、若所述連接池中不存在匹配的連接槽,利用所述數(shù)據(jù)庫名創(chuàng)建新的連接槽,作為第三連接槽,并確定連接槽的引用計數(shù)的初始值為1;
12、初始化所述第三連接槽當前協(xié)調(diào)節(jié)點與其他協(xié)調(diào)節(jié)點、數(shù)據(jù)節(jié)點之間的描述信息,并初始化描述信息對應(yīng)的網(wǎng)絡(luò)連接句柄;
13、從連接池中取走所述第三連接槽,將所述第三連接槽賦給連接代理,以基于第三連接槽執(zhí)行所述sql請求。
14、可選地,所述將所述第三連接槽賦給連接代理,以基于第三連接槽執(zhí)行所述sql請求,包括:
15、將所述第三連接槽賦給連接代理,并判斷所述第三連接槽的網(wǎng)絡(luò)連接句柄是否可以正常通信;
16、若不能正常通信,則根據(jù)第三連接槽中的連接描述信息創(chuàng)建網(wǎng)絡(luò)連接,將網(wǎng)絡(luò)連接的連接句柄存入第三連接槽,以基于攜帶連接句柄的第三連接槽執(zhí)行所述sql請求;
17、利用連接句柄向數(shù)據(jù)庫節(jié)點下發(fā)sql請求,并根據(jù)會話描述信息設(shè)置連接的上下文。
18、可選地,還包括:
19、初始化連接代理,確定所述連接代理已存儲當前會話的描述信息,且所述連接代理持有從連接池獲取的連接槽;
20、其中,當前會話的描述信息包括會話的連接屬性和參數(shù)、用戶名以及關(guān)聯(lián)的數(shù)據(jù)庫名。
21、可選地,所述更新連接槽的引用計數(shù),并根據(jù)引用計數(shù)將連接槽歸還連接池或繼續(xù)保留在連接池緩存中,包括:
22、當所述sql請求執(zhí)行完畢時確定事務(wù)結(jié)束,將連接槽的引用計數(shù)-1;
23、若連接槽的引用計數(shù)為0,則將連接槽歸還給所述連接池;
24、若連接槽的引用計數(shù)不為0,則將連接槽放入連接池緩存。
25、可選地,所述第一連接槽的確定方法包括:
26、從連接池緩存中選取數(shù)據(jù)庫名、用戶名連接屬性和連接參數(shù)均匹配成功的連接槽作為目標連接槽;
27、確定所述目標連接槽的空閑時間比例大于預(yù)設(shè)閾值,將所述目標連接槽作為執(zhí)行sql請求的第一連接槽。
28、本申請還提供一種基于數(shù)據(jù)庫分布式通信的連接復用裝置,包括:
29、請求接收模塊,用于接收業(yè)務(wù)組件的sql請求,基于所述sql請求開啟事務(wù);
30、匹配模塊,用于若當前sql語句為開始事務(wù)語句,從連接池緩存中查找并確定匹配成功的第一連接槽,并從連接池緩存中取走所述第一連接槽,根據(jù)所述第一連接槽執(zhí)行當前sql語句;
31、循環(huán)執(zhí)行模塊,用于循環(huán)執(zhí)行事務(wù)中的后續(xù)sql語句,直至當前的sql語句為提交語句或回滾語句時結(jié)束事務(wù),更新連接槽的引用計數(shù),并根據(jù)引用計數(shù)將連接槽歸還連接池或繼續(xù)保留在連接池緩存中;
32、歸還模塊,用于當全部sql語句執(zhí)行完成時,將所述連接槽歸還給連接池。
33、第三方面,本申請?zhí)峁┮环N電子設(shè)備,包括:至少一個存儲器,用于存儲程序;至少一個處理器,用于執(zhí)行存儲器存儲的程序,當存儲器存儲的程序被執(zhí)行時,處理器用于執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法。
34、第四方面,本申請?zhí)峁┮环N計算機可讀存儲介質(zhì),計算機可讀存儲介質(zhì)存儲有計算機程序,當計算機程序在處理器上運行時,使得處理器執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法。
35、第五方面,本申請?zhí)峁┮环N計算機程序產(chǎn)品,當計算機程序產(chǎn)品在處理器上運行時,使得處理器執(zhí)行第一方面或第一方面的任一種可能的實現(xiàn)方式所描述的方法。
36、可以理解的是,上述第二方面至第五方面的有益效果可以參見上述第一方面中的相關(guān)描述,在此不再贅述。
37、總體而言,通過本申請所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下有益效果:
38、(1)本申請中的連接池允許多個事務(wù)和sql請求共享同一個連接,通過從連接池中取走已有的連接槽而不是每次都新建連接,可以減少連接創(chuàng)建和銷毀的開銷,將連接槽緩存到連接池中,可以避免頻繁的連接建立和釋放,并且連接池為事務(wù)分配連接槽,并在事務(wù)結(jié)束后將連接槽歸還,可以確保連接槽在事務(wù)生命周期內(nèi)的有效使用,從而提高連接利用率來提升系統(tǒng)的運行效率。
39、(2)本申請通過連接槽的引用計數(shù)確定連接槽是否仍在使用,如果引用計數(shù)降為零,連接槽可以安全地歸還到連接池中,供其他事務(wù)使用。根據(jù)引用計數(shù)來決定是否將連接槽歸還給連接池或繼續(xù)保留,可以有效地管理連接池中的連接資源,進而進一步地提高連接資源的利用效率。
40、(3)本申請充分地利用了網(wǎng)絡(luò)連接,減少了網(wǎng)絡(luò)連接的空閑時間。因此在網(wǎng)絡(luò)連接資源固定的場景下,本申請可以提升數(shù)據(jù)庫的并發(fā)能力,同時也可以提升網(wǎng)絡(luò)并發(fā)達到瓶頸場景下的讀寫性能。
1.一種基于數(shù)據(jù)庫分布式通信的連接復用方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的基于數(shù)據(jù)庫分布式通信的連接復用方法,其特征在于,還包括:
3.根據(jù)權(quán)利要求2所述的基于數(shù)據(jù)庫分布式通信的連接復用方法,其特征在于,還包括:
4.根據(jù)權(quán)利要求3所述的基于數(shù)據(jù)庫分布式通信的連接復用方法,其特征在于,所述將所述第三連接槽賦給連接代理,以基于第三連接槽執(zhí)行所述sql請求,包括:
5.根據(jù)權(quán)利要求2所述的基于數(shù)據(jù)庫分布式通信的連接復用方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求1所述的基于數(shù)據(jù)庫分布式通信的連接復用方法,其特征在于,所述更新連接槽的引用計數(shù),并根據(jù)引用計數(shù)將連接槽歸還連接池或繼續(xù)保留在連接池緩存中,包括:
7.根據(jù)權(quán)利要求1所述的基于數(shù)據(jù)庫分布式通信的連接復用方法,其特征在于,所述第一連接槽的確定方法包括:
8.一種基于數(shù)據(jù)庫分布式通信的連接復用裝置,其特征在于,包括:
9.一種電子設(shè)備,其特征在于,包括:
10.一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲有計算機程序,其特征在于,當所述計算機程序在處理器上運行時,使得所述處理器執(zhí)行如權(quán)利要求1-7任一所述的方法。