Druid 連接池簡介
Druid首先是一個數據庫連接池。Druid是目前最好的數據庫連接池,在功能、性能、擴展性方面,都超過其他數據庫連接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應用,經過一年多生產環境大規模部署的嚴苛考驗。
同時Druid不僅僅是一個數據庫連接池,它包括四個部分:
Druid是一個JDBC組件,它包括三個部分:
基於Filter-Chain模式的插件體系。
DruidDataSource 高效可管理的數據庫連接池。
SQLParser
Druid的功能
1、替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
2、可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。
3、數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行爲,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。
4、SQL執行日誌,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。
5、擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter機制,很方便編寫JDBC層的擴展插件。
使用原因
原先項目使用的是C3P0連接池,在項目發佈使用一段時間後發現c3p0 連接池訪問數據庫的時候創建連接會在oralce的lisenter.log 日誌文件記錄。
經過一段時間觀察發現oralce每6秒會在lisenter.log日誌記錄一次,我們設置的最小連接是20,所以oracle每次會在日誌記錄20條。隨着時間越長日誌文件越來越大,當日志文件達到4個G的時候會導致oracle死掉。 經過不斷調整參數配置還是無法得到解決方案,最後選擇使用阿里Druid連接池試試,Druid默認最小連接2個,配置好後發佈觀察日誌發現只在創建的時候在日誌裏面記錄了2條記錄。沒有像C3P0那樣每6秒記錄一次導致日誌文件越來越大。
參考他人博客。