對於J2EE容器的外部的Java應用,哪個連接池庫最好?Java數據庫連接池(BoneCP vs DBPool vs c3p0)
- 我聽說c3p0已經過時了。
- 雅加達的公共池庫不再是正在開發
所以我留下了BoneCP和DBPool。從我可以告訴兩個有限的活動。我能看到的主要區別在於性能,BoneCP似乎贏了。但是文檔很薄弱。
您在現實世界中使用過哪個數據庫池庫,爲什麼?什麼是好與壞?
對於J2EE容器的外部的Java應用,哪個連接池庫最好?Java數據庫連接池(BoneCP vs DBPool vs c3p0)
所以我留下了BoneCP和DBPool。從我可以告訴兩個有限的活動。我能看到的主要區別在於性能,BoneCP似乎贏了。但是文檔很薄弱。
您在現實世界中使用過哪個數據庫池庫,爲什麼?什麼是好與壞?
在工作中,我們已經使用BoneCP(作爲c3p0的替代品),據我所知沒有任何問題(我自己沒有進行升級)。從我所看到並閱讀的內容來看,它似乎是一個精心設計的實體圖書館,我個人將其用於替代品上:它似乎是那些很適合的「正常工作」圖書館之一。
沒有什麼不好說的DBPool,我只是不夠熟悉;儘管看看它的站點文檔當然看起來是一個加號。
我們在Tomcat內外都使用C3P0。但是,監視和日誌記錄並不是最大的,所以我們將開始使用SpringSource連接池。我期待的最好功能之一就是準確顯示SQL語句在特定時間運行的情況。
有一兩件事我們必須添加到C3P0是定時特定的連接請求後,等待的連接的裝置,當池已滿,所有的連接都忙:
public Connection getConnection() throws SQLException
{
long t = System.currentTimeMillis();
ComboPooledDataSource ds = (ComboPooledDataSource) getDelegate();
Connection conn = null;
if (ds.getNumBusyConnections() == ds.getMaxPoolSize())
{
logger.info("Pool (" + ds.getUser() + ") full, waiting for connection");
conn = ds.getConnection();
t = System.currentTimeMillis() - t;
logger.info("Connection busy wait time (" + ds.getUser() + "): " + t + "ms");
}
else
{
conn = ds.getConnection();
}
return conn;
}
所以你的東西必須考慮:
BoneCP看起來很快(我從來沒有聽說過),但老實說,C3P0對我們來說已經快了很多。當我們在4或5年前進行測試時,DBCP非常緩慢(他們似乎已經確定了這一點),但Oracle的池非常緩慢,C3P0速度非常快。我們的測試看起來非常像BoneCP網站上的測試。
我對BoneCP的可管理性一無所知。 #3已成爲我們生產環境中最重要的功能。
關於特定於日誌記錄的sql語句,您是否可以不啓用java.sql包的調試日誌? – r0ast3d
SpringSource池允許通過JMX進行實時檢查是我的理解。 –
您也可以使用BoneCP啓用SQL日誌記錄:http://jolbox.com/bonecp/downloads/site/apidocs/index.html?com/jolbox/bonecp/BoneCPConfig.html,使用「setLogStatementsEnabled」方法。 –
幾年前我們做出選擇時,只是在c3p0和dbcp之間。那時c3p0是在oracle重啓之後可以重建它的連接的那個。使用DBCP,我們必須重新啓動應用程序服務器才能使其再次運行。
另外我發現c3p0調試懸掛連接功能非常有用的跟蹤連接泄漏,否則可能極難找到。
我從c3p0中遺漏的是對執行語句的有用日誌記錄,以及有關他們花了多長時間的信息。
我目前正在大型企業Intranet環境中試用BoneCP。我對c3p0有着一貫的線程問題(如果你四處挖掘,那麼很常見),所以我做了我的研究,看起來就像是最好的股票庫。配置是一個練習,但一旦你把它放下,它似乎很棒。
我正在使用c3p0以及DataNucleus/JPA,並且很容易切換到BoneCP。實際上,我只需要在Spring上下文文件中更改DataSource配置。
至於我看到BoneCP基準是非常好的:http://www.databaseskill.com/2282333/,http://jolbox.com/benchmarks.html
看看HikariCP它取代BoneCP https://brettwooldridge.github.io/HikariCP/這是現在我用我的項目之一。
對於那些好奇的人,我最終選擇了BoneCP。 –
您是否有任何關於BoneCP的詳細配置文檔的鏈接?或者可以分享如何在JBoss中使用BoneCP? – 2014-01-21 13:29:11