概述
目前資料庫連線池產品是非常多的,dbcp、c3p0、proxool等都是非常優秀的產品。連線池的效能和穩定性會對我們的程式造成極大的影響,因此,有必要對這些連線池產品進行一些選擇。另外,連線池的配置是否恰當,將會決定該連線池的效能和穩定性表現,所以,本文將給出連線池配置的一些要點。在這些連線池產品中作出選擇是比較困難的,每個優秀的產品都有它自身的特點,而且也很難找出乙個在各種執行環境中都最表現最優的產品,因此,本文將選出一些目前來說比較優秀的產品,簡要介紹一下它們的配置要點,以及如何使用在我們的專案中。至於在生產環境中,哪種產品會表現最好,則...。
hibernate開發組推薦使用c3p0,spring開發組推薦使用dbcp(dbcp連線池有weblogic連線池同樣的問題,就是強行關閉連線或資料庫重啟後,無法reconnect,但可通過配置來解決),hibernate in action推薦使用c3p0和proxool。其它還有不少商業產品,但效能與穩定性的整體表現反而不如這些開源資料庫連線池。從網上的搜尋情況來看,也是dbcp、c3p0、proxool的使用較為廣泛。但是關於它們的效能與穩定性,眾說不一,難以得到結論。
dbcp是apache出品的,開發也較為活躍,也是使用極為廣泛的乙個資料庫連線池產品。從網上搜尋的資料以及自己以往使用dbcp的經驗來看,dbcp的穩定性有些問題。但是它的開發較為活躍,所以我們可以相信它會解決這些問題,而且有些問題是可以通過額外的配置來解決的。
c3p0,穩定性似乎不錯,在這方面似乎有很好的口碑。至於效能,應該不是最好的,算是中規中矩的型別。
proxool的口碑似乎很好,不大見到負面的評價,從官方資料上來看,有許多有用的特性和特點,也是許多人推薦的。但是開發不夠活躍,使用者也較少。
我選定這三個產品作為我們系統的資料庫連線池,並使用proxool作為目前開發環境中的連線池產品(proxool便於監控)。
使用和配置
使用三個產品都能很方便地整合到springframework中,也都可以配置為jndi資源,因此,它們可以隨意更換,不會影響程式**。在生產環境中,如果需要開放我們的資料庫給其它系統使用或共享,我推薦使用應用伺服器的jndi。在開發環境中,我們不使用jndi。以下的配置是不使用jndi時的spring配置,至於jndi的配置,請參考相關文件,該文不做敘述,但配置項基本相同。
dbcp
在配置時,不常用但在生產環境中很有用的引數有:removeabandoned 、removeabandonedtimeout、maxwait。如果設定了rmoveabandoned=true,那麼在getnumactive()快要到getmaxactive()的時候,系統會進行無效的connection的**,**的 connection為removeabandonedtimeout(預設300秒)中設定的秒數後沒有使用的connection。
如果設定了logabandoned=true,dbcp將會在**connection之後,列印**connection的錯誤資訊,包括在哪個地方用了connection卻忘記關閉了這樣的資訊,在除錯的時候很有用。
基本配置如下:
select 1
true
c3p0
5
6015010
$$
proxool
另外,也可以在單獨的乙個檔案中配置proxool。比如,在web-inf/下建立proxool.xml檔案:
<?xml version="1.0" encoding="utf-8"?>
mimir
jdbc:mysql://localhost:3306/dbname?user=username&password= password"
com.mysql.jdbc.driver
10select 1 from dual
proxoolservletconfigurator
org.logicalcobwebs.proxool.configuration.servletconfigurator
xmlfile
web-inf/proxool.xml
1
然後,在spring的配置中可以這樣寫:
如果需要監控,可以在web-inf/web.xml中加上:
proxooladmin
org.logicalcobwebs.proxool.admin.servlet.adminservlet
資料庫連線池配置
連線池的必要性 資料庫連線池是負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有的資料庫連線,可以視作乙個存放資料庫連線的容器。資料庫連線池採用了資源池設計模式,用於資源共享,避免資源的頻繁分配與釋放問題。同時便於統一管理,可以通過對連線池的控制,限制系統與資料庫的連線,監視資料庫的連線...
資料庫連線池技術 DBCP連線池 配置
最近遇到資料庫連線池配置問題,搜了很多資料對照著進行全域性配置都沒有解決。報的錯誤是 org.apache.tomcat.dbcp.dbcp.sqlnestedexception cannot create jdbc driver of class for connect url jdbc mysq...
資料庫連線池 Redis連線池
基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...