鏈接池的一些感悟

在數據庫訪問時,創建鏈接須要400-500毫秒的時間。若是使用鏈接池能夠加強系統的性能,主要緩存保留必定數量數據鏈接,能夠重複使用。但並非使用鏈接池就能改進性能,下面列舉常見的鏈接池問題和什麼是好的鏈接池。

是否使用鏈接池?

使用鏈接池的條件是,是否使用鏈接池後,能減小數據庫鏈接所用的時間,並總體加強系統吞吐量。

鏈接池與資源的聯繫

若是緩存一個鏈接,好比數據庫服務端須要1M內存保存一個鏈接,那麼若是一個服務器鏈接池緩存200個鏈接,數據庫服務端須要消耗200M,那麼使用反向代理的大型服務架構,好比如今有20臺服務器用來負載均衡,那麼數據庫服務端就消耗了4000M(4G)內存用來維護保持鏈接,這個資源消耗量是很是大。因此考慮鏈接池與資源的聯繫很大程度成線性遞增關係。

鏈接池的常見問題

1.超時處理,從鏈接池獲取數據庫鏈接須要作超時處理,不能一直阻塞直到獲取到鏈接

2.最大鏈接數,最大鏈接數太小形成鏈接延遲,鏈接池獲取鏈接超時,阻塞等問題。最大鏈接過大給數據庫服務端增長資源負擔。

3.鏈接池鏈接數量與線程的關係,通常鏈接數量與線程的數量成正比,最大鏈接能夠設定爲平均線程最大數。

4.鏈接的分派粒度,通常爲一個線程分派一個鏈接,而後在處理合適大小的數據操做後返還給鏈接池。好比在網站方面一個頁面的請求開始到結束做爲一個鏈接的分派。


鏈接池鏈接的類別

1.共享鏈接,有些線程獲取鏈接只要作簡單數據查詢,並且佔有時間不是很是長,這時,這類鏈接能夠共享給這類線程。以便高效使用鏈接.。
在獲取共享鏈接時,可爲鏈接作共享計數,這樣經過heap能夠快速獲取共享量最小的鏈接,加快數據訪問。

2.獨享鏈接,有些線程可能須要作大量的數據庫更新,插入,查詢等。好比用於處理用戶註冊的線程須要初始化大量的數據而且查詢訪問大量的數據,這時就能夠爲此類線程分派獨享鏈接完成這類事務。

3.緩存鏈接,這類鏈接主要用於緩存鏈接,以便須要時來使用。數據庫

相關文章
相關標籤/搜索