資料庫連線的生命週期
讓我看看連線一次資料庫要經歷哪些步驟
用 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
連線池基本的思想是在系統初始化的時候,將資料庫連線作為物件儲存在記憶體中,當使用者需要訪問資料庫時,並非建立乙個新的連線,而是從連線池中取出乙個已建立的空閒連線物件。使用完畢後,使用者也並非將連線關 閉,而是將連線放回連線池中,以供下乙個請求訪問使用。而連線的建立 斷開都由連線池自身來管理。同 時,...
執行緒池的原理和連線池的原理
執行緒池的原理 來看一下執行緒池究竟是怎麼一回事?其實執行緒池的原理很簡單,類似於作業系統中的緩衝區的概念,它的流程如下 先啟動若干數量的執行緒,並讓這些執行緒都處於睡眠狀態,當客戶端有乙個新請求時,就會喚醒執行緒池中的某乙個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,執行緒又處於睡...