資料庫連線池理解

2021-07-25 14:52:57 字數 889 閱讀 7680

1 資料庫連線池中的連線,本質是一種物件,建立連線池,可以減少物件初始化、建立的時間,這個和執行緒池有點類似。都是為了節省建立時間,資源復用。

2 和連線池一樣,資料庫連線池建立的一般也有最大,最小值,即最大連線數量(連線池能申請的最大數量,超過了最大數量後,後續申請將加入到佇列中等待)和最小鏈結數量(連線池初始化時候的數量,並且一直會保持這個最小的數。直到申請大於這個數量)。

3 連線池框架:(網上的評價是)

3.1 c3p0比較耗費資源,效率方面可能要低一點。

3.2 dbcp在實踐中存在bug,在某些種情會產生很多空連線不能釋放,hibernate3.0已經放棄了對其的支援。

3.3 proxool的負面評價較少,現在比較推薦它,而且它還提供即時監控連線池狀態的功能,便於發現連線洩漏的情況。

3.4 druid

阿里出品,**和支付寶專用資料庫連線池,但它不僅僅是乙個資料庫連線池,它還包含乙個proxydriver,一系列內建的jdbc元件庫,乙個sql parser。支援所有jdbc相容的資料庫,包括oracle、mysql、derby、postgresql、sql server、h2等等。

druid針對oracle和mysql做了特別優化,比如oracle的ps cache記憶體占用優化,mysql的ping檢測優化。

druid提供了mysql、oracle、postgresql、sql-92的sql的完整支援,這是乙個手寫的高效能sql parser,支援visitor模式,使得分析sql的抽象語法樹很方便。

簡單sql語句用時10微秒以內,複雜sql用時30微秒。

通過druid提供的sql parser可以在jdbc層攔截sql做相應處理,比如說分庫分表、審計等。druid防禦sql注入攻擊的wallfilter就是通過druid的sql parser分析語義實現的。

資料庫連線池理解

先說一下連線池的作用 1.限定連線的個數,不會導致由於連線過多導致系統執行緩慢或崩潰 2.連線池不需要每次都去建立或銷毀,節約了資源 3.連線池不需要每次都去建立,響應時間快 然後是資料庫連線池的優點執行原理 在我們不使用資料庫連線池的時候,每次訪問資料庫都需要建立連線,使用完成之後需要釋放關閉連線...

理解資料庫連線池

下面用乙個簡單的例子來說明下 如下 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq u...

資料庫連線池 Redis連線池

基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...