- HikariCP數(shù)據(jù)庫連接池實(shí)戰(zhàn)
- 朱政科
- 808字
- 2019-09-02 17:55:04
2.2 數(shù)據(jù)庫連接池原理
數(shù)據(jù)庫連接池原理是:在系統(tǒng)初始化的時(shí)候,在內(nèi)存中開辟一片空間,將一定數(shù)量的數(shù)據(jù)庫連接作為對象存儲在對象池里,并對外提供數(shù)據(jù)庫連接的獲取和歸還方法。用戶訪問數(shù)據(jù)庫時(shí),并不是建立一個(gè)新的連接,而是從數(shù)據(jù)庫連接池中取出一個(gè)已有的空閑連接對象;使用完畢歸還后的連接也不會馬上被關(guān)閉,而是由數(shù)據(jù)庫連接池統(tǒng)一管理回收,為下一次借用做好準(zhǔn)備。如果由于高并發(fā)請求導(dǎo)致數(shù)據(jù)庫連接池中的連接被借用完畢,其他線程就會等待,直到有連接被歸還。整個(gè)過程中,連接并不會被關(guān)閉,而是源源不斷地循環(huán)使用,有借有還。數(shù)據(jù)庫連接池還可以通過設(shè)置其參數(shù)來控制連接池中的初始連接數(shù)、連接的上下限數(shù),以及每個(gè)連接的最大使用次數(shù)、最大空閑時(shí)間等,也可以通過其自身的管理機(jī)制來監(jiān)視數(shù)據(jù)庫連接的數(shù)量、使用情況等。
了解完數(shù)據(jù)庫連接池的原理,我們繼續(xù)來看數(shù)據(jù)庫連接池的構(gòu)成。數(shù)據(jù)庫連接池以連接池的管理為核心,主要支持連接池的建立和釋放兩大核心功能。“麻雀雖小,五臟俱全”,數(shù)據(jù)庫連接池還可以支持其他非常實(shí)用的功能。一款商用的數(shù)據(jù)庫連接池、一款能夠被開發(fā)者廣泛使用的數(shù)據(jù)庫連接池、一款能夠在開源社區(qū)持續(xù)活躍發(fā)展的數(shù)據(jù)庫連接池還必須再支持一些實(shí)用的功能,如并發(fā)(鎖性能優(yōu)化乃至無鎖)、連接數(shù)控制(不同的系統(tǒng)對連接數(shù)有不同的需求)、監(jiān)控(一些自身管理機(jī)制來監(jiān)視連接的數(shù)量及使用情況等)、外部配置(各種主流數(shù)據(jù)庫連接池官方文檔最核心的部分)、資源重用(數(shù)據(jù)庫連接池的核心思想)、檢測及容災(zāi)(面對一些網(wǎng)絡(luò)、時(shí)間等問題的自愈)、多庫多服務(wù)(如不同的數(shù)據(jù)庫、不同的用戶名和密碼、分庫分表等情況)、事務(wù)處理(對數(shù)據(jù)庫的操作符合ALL-ALL-NOTHING原則)、定時(shí)任務(wù)(如空閑檢查、最小連接數(shù)控制)、緩存(如PSCache等避免對SQL重復(fù)解析)、異常處理(對JDBC訪問的異常統(tǒng)一處理)、組件維護(hù)(如連接狀態(tài)、JDBC封裝的維護(hù))等。綜上,一款商用的成熟的數(shù)據(jù)庫連接池的構(gòu)成應(yīng)該大致如圖2-4所示。

圖2-4 數(shù)據(jù)庫連接池的構(gòu)成
- Web前端開發(fā)技術(shù):HTML、CSS、JavaScript(第3版)
- Dynamics 365 Application Development
- Mastering Selenium WebDriver
- JavaFX Essentials
- Mastering Ubuntu Server
- INSTANT CakePHP Starter
- 你必須知道的204個(gè)Visual C++開發(fā)問題
- Android Native Development Kit Cookbook
- Mastering React
- NGUI for Unity
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)(第二版)
- Solr權(quán)威指南(下卷)
- WCF技術(shù)剖析(卷1)
- Mastering Unreal Engine 4.X
- 現(xiàn)代C++語言核心特性解析