連線池

負責分配,管理和釋放資料庫連線,"允許應用重複使用現有的資料庫連線",而不是建立新的。

核心概念

對於共享資源,有一種設計模式,稱作 資源池(Resource Pool )

該模式正是為了解決資源頻繁分配、釋放所造成的問題的 。

Connection Pool

原理與實作

為資料庫連線建立一個 "連線緩衝(connection pooling)"。

預先向資料庫拿取指定的連線數放入緩衝池

當需要建立連線時,只需從"緩衝池"中取出一個,使用完畢之後再放回去。

未使用連線池
使用連線池

優點

  • 資源重用,不需重複地跟DB建立連線然後又釋放掉。

  • 資源分配手段,可設定與DB 最小連線數最大的連線數,避免超過DB所能負擔的連線數。

  • Pool 可驗證 Connectin 是否還正常,若不正常時,便再與DB建立好的正常連線, 確保程式取得的Connection都是正常可使用的。

各家連線池

JAVA

C3P0、DBCP、Proxool、Tomcat JDBC Pool、BoneCP、Alibaba Druid、HikariCP。

思考問題

  • 分庫議題 - 線程數(Thread) 過多、連接數過多、連線不能重複使用

參考資料

https://iter01.com/16624.html https://juejin.im/entry/58fb03220ce4630061233c98

Last updated

Was this helpful?