連線池原理簡述

2021-09-26 20:18:41 字數 572 閱讀 5764

資料庫連線的生命週期

讓我看看連線一次資料庫要經歷哪些步驟

用 database driver 開啟乙個連線去連線資料庫

開啟乙個 tcp socket 讀寫資料

資料讀寫完畢

關閉連線

關閉socket

可以看出進行一次資料庫連線是個相當昂貴的操作。

沒有連線池的情況

來自部落格

如上圖,如果沒有連線池,這時候應用有15萬個併發使用者操作(包括讀寫)那麼就會建立很多連線到資料庫,這樣頻繁的建立連線又銷毀即浪費了cpu,記憶體資源,又會造成資料庫連線過多而報錯。(mysql 5.7 最大連線數 是 10萬,預設是 151)

有連線池的情況

來自部落格

了解連線池原理的好處

懂得如何配置最大連線數了(不要超過資料庫最大連線數,當然也不是越大越好,最大連線數一般跟最大執行緒池數一樣,設定成 cpu核心數*2 就行了,具體參考 文章)

知道了資源池設計模式:即資源池設計模式是用來解決資源頻繁建立和銷毀帶來的浪費問題。比如資料庫連線池, 執行緒池等等。後續遇到同樣場景的問題,就可以用此設計模式來解決。

參考

mybatis連線池原理

補充說明 1.pooleddatasourc中包含乙個poolstate物件,這個物件包含了兩個集合,idleconnections 儲存連線池中空閒的執行緒 activeconnections 儲存連線池中活動的執行緒 2.建立新執行緒 pooledconnection conn new pool...

連線池原理 Andy pany

連線池基本的思想是在系統初始化的時候,將資料庫連線作為物件儲存在記憶體中,當使用者需要訪問資料庫時,並非建立乙個新的連線,而是從連線池中取出乙個已建立的空閒連線物件。使用完畢後,使用者也並非將連線關 閉,而是將連線放回連線池中,以供下乙個請求訪問使用。而連線的建立 斷開都由連線池自身來管理。同 時,...

執行緒池的原理和連線池的原理

執行緒池的原理 來看一下執行緒池究竟是怎麼一回事?其實執行緒池的原理很簡單,類似於作業系統中的緩衝區的概念,它的流程如下 先啟動若干數量的執行緒,並讓這些執行緒都處於睡眠狀態,當客戶端有乙個新請求時,就會喚醒執行緒池中的某乙個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,執行緒又處於睡...