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