在MySql的的配置參考中,使用autoReconnect屬性時發出警告emptor。我遵循指示,並增加了我的服務器的wait_timeout。由於我使用的DBCP(我正在考慮轉移到c3po閱讀Stackoverflow擊落DBCP後的幾個帖子),可以使用autoReconnectForPools屬性嗎?當在DBCP或任何連接池中啓用時,它實際上做了什麼?MySql連接器/ J中的autoReconnect和autoReconnectForPools有什麼區別?
回答
autoReconnect會向客戶端拋出一個SQLException,但會嘗試重新建立連接。
autoReconnectForPools將嘗試在每次執行SQL之前對服務器執行ping操作。
我在過去有很多dbcp的問題,尤其是斷開連接。大部分通過轉向c3p0解決。注意mysql驅動程序有c3p0的連接測試器(com.mysql.jdbc.integration.c3p0.MysqlConnectionTester)。
此外,你可能想看看這個:Connection pooling options with JDBC: DBCP vs C3P0
你確定你使用正確DBCP?
根據short configuration notes,由於默認值爲testOnBorrow=true
(在使用前測試連接,並且如果失敗,它會從池中刪除,我們嘗試獲取新連接),因此應該處理超時時間相當不錯。 。
您需要做的唯一事情是確保您將validationQuery
屬性配置爲非空字符串,例如, MySQL數據庫的「SELECT 0」(here是關於每個DB使用的不同validationQuery值的文章)。
MySQL的autoReconnect
功能被棄用,因爲它有很多問題(參考:官方documentation)。
autoReconnectForPools
有一點做與autoReconnect
,它更多的是與autoCommit
和reconnectAtTxEnd
- 當所有3 true
,它將ping服務器在每次交易結束,如果需要,自動重新連接。
DBCP的連接驗證是不完美的 - 即使設置了testOnBorrow
,它有時會從池中返回斷開的連接(更不用說在每次借用之前測試連接都非常低效)。
根據this article,HikariCP似乎是一個更好的池實現,因爲它能夠使用比運行測試查詢快得多的API,並且專門設計爲永不返回到客戶端應用程序的斷開連接。
- 1. Tomcat的BIO連接器和NIO連接器有什麼區別?
- 2. MySQL中的套接字和端口連接有什麼區別?
- 3. 是什麼左邊的區別連接和MySQL中右連接
- 4. Mysql的表連接中的「using」和「on」有什麼區別?
- 5. 範圍和連接有什麼區別?
- 6. ,和+連接時有什麼區別?
- 7. mysql中'where'和不同'連接'有什麼區別?
- 8. 逗號分隔的連接和MySQL中的語法連接有什麼區別?
- 9. i = i + j有什麼區別;和i + = j;在C語言?
- 10. 從DataSource getconnection()和Mysql會話連接有什麼區別?
- 11. MySql中utf8_general_ci和utf8_unicode_ci有什麼區別?
- 12. =和在mysql中有什麼區別?
- 13. mysql中datadir和innodb_data_home_dir有什麼區別?
- 14. MySQL中boolean和bool有什麼區別?
- 15. 內連接和外連接有什麼區別
- 16. 散列連接和合並連接(Oracle RDBMS)有什麼區別?
- 17. 插座連接和動作連接有什麼區別?
- 18. 左連接和左外連接有什麼區別?
- 19. 反連接和反半連接有什麼區別?
- 20. androidpn連接到服務器和普通套接字連接有什麼區別?
- 21. MySQL連接器/ J問題
- 22. Mysql連接器j錯誤
- 23. while(++ i < - j)&while(i ++ <j--)有什麼區別?
- 24. 在SQL/MySQL中,連接語句中的「ON」和「WHERE」有什麼區別?
- 25. 左外連接 - 有什麼區別?
- 26. SocketConnection與DCOM連接有什麼區別
- 27. CyclicBarrier/CountDownLatch和Java中的連接有什麼區別?
- 28. cogroup和PIG中的連接有什麼區別?
- 29. pg_hba.conf中的「local」和「localhost」連接類型有什麼區別?
- 30. 套接字的連接和讀取超時有什麼區別?
謝謝你的想法。 – ashitaka 2009-04-03 01:44:34