1. Druid是什麼?
Druid是Java語言中最好的數據庫鏈接池。Druid可以提供強大的監控和擴展功能。
2. 在哪裏下載druid
- 正式版本下載:
maven中央倉庫: central.maven.org/maven2/com/…
3. 怎麼獲取Druid的源碼
Druid是一個開源項目,源碼託管在github上,源代碼倉庫地址是 github.com/alibaba/dru…。同時每次Druid發佈正式版本和快照的時候,都會把源碼打包,你能夠從上面的下載地址中找到相關版本的源碼
4. 怎麼配置maven
Druid 0.1.18 以後版本都發布到maven中央倉庫中,因此你只須要在項目的pom.xml中加上dependency就能夠了。例如:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid-version}</version>
</dependency>
複製代碼
也能夠選擇 Maven倉庫查找公共的倉庫地址:www.mvnrepository.com/artifact/co…
5. 怎麼打開Druid的監控統計功能
Druid的監控統計功能是經過filter-chain擴展實現,若是你要打開監控統計功能,配置StatFilter,具體看這裏:github.com/alibaba/dru…
6. 怎樣使用Druid的內置監控頁面
內置監控頁面是一個Servlet,具體配置看這裏:github.com/alibaba/dru…
7. 內置監控中的Web和Spring關聯監控怎麼配置?
- Web關聯監控配置
github.com/alibaba/dru… - Spring關聯監控配置
github.com/alibaba/dru…
8. 怎麼配置防護SQL注入攻擊
Druid提供了WallFilter,它是基於SQL語義分析來實現防護SQL注入攻擊的。具體配置看這裏:github.com/alibaba/dru…
9. Druid有沒有參考配置
不一樣的業務場景需求不一樣,你可使用咱們的參考配置,但建議你仔細閱讀相關文檔,瞭解清楚以後作定製配置。github.com/alibaba/dru…
10. 我想日誌記錄JDBC執行的SQL,如何配置
Druid提供了Log4jFilter、CommonsLogFilter和Slf4jFilter,具體配置看這裏github.com/alibaba/dru…
11. 個人程序可能產生鏈接泄漏了,有什麼辦法?
Druid提供了多種監測鏈接泄漏的手段,具體看這裏:github.com/alibaba/dru…
12. 在Druid中使用PSCache會有內存佔用過大問題麼?
鏈接Oracle數據庫,打開PSCache,在其餘的數據庫鏈接池都會存在內存佔用過多的問題,Druid是惟一解決這個問題的鏈接池。具體看這裏:github.com/alibaba/dru…
13. 有沒有和其餘數據庫鏈接池的對比?
- 各類數據庫鏈接池對比github.com/alibaba/dru…
14. 從其餘鏈接池遷移要注意什麼?
- 不一樣鏈接池的參數參照對比: code.alibabatech.com/wiki/pages/…
- DBCP遷移 github.com/alibaba/dru…
15. Druid中有沒有相似Jboss DataSource中的ExceptionSorter
ExceptionSorter是JBoss DataSource中的優秀特性,Druid也有同樣功能的ExceptionSorter,但不用手動配置,自動識別生效的。具體看這裏:github.com/alibaba/dru…
16. Druid中的maxIdle爲何是沒用的?
maxIdle是Druid爲了方便DBCP用戶遷移而增長的,maxIdle是一個混亂的概念。鏈接池只應該有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle,分別至關於maxPoolSize和minPoolSize。
17. 個人應用配置的是JNDI數據源,能夠用DruidDataSource麼?
DruidDataSource支持JNDI配置,具體看這裏:github.com/alibaba/dru…
具體實現的類是這個:com.alibaba.druid.pool.DruidDataSourceFactory,你能夠閱讀代碼加深理解。
18. 個人應用已使用DBCP,是代碼中寫死的,怎樣更換爲Druid?
能夠的,Druid提供了一箇中徹底平滑遷移DBCP的辦法。
- 1) 從repo1.maven.org/maven2/com/… 下載druid-wrapper-xxx.jar
- 2) 加入druid-xxx.jar
- 3) 從你的WEB-INF/lib/中刪除dbcp-xxx.jar
- 4) 按須要加上配置,好比JVM啓動參數加上-Ddruid.filters=stat,動態配置druid的filters
這種用法,使得能夠在一些非本身開發的應用中使用Druid,例如在sonar中部署druid,sonar是一個使用jruby開發的web應用,寫死了DBCP,只可以經過這種方法來更換。
19. 我想試用快照版本,怎麼獲取?
直接獲取快照版本的地址是:code.alibabatech.com/mvn/snapsho… ,使用快照版本建議加入咱們QQ羣 92748305,遇到問題直接反饋給咱們。
20. 有一些SQL執行很慢,我但願日誌記錄下來,怎麼設置?
在StatFilter配置中有慢SQL執行日誌記錄,看這裏github.com/alibaba/dru…
21. 我但願加密個人數據庫密碼怎麼辦?
運維和DBA都不但願把密碼明文直接寫在配置文件中,Druid提供了數據庫祕密加密的功能。具體看這裏:github.com/alibaba/dru…
22. 如何參與Druid的開發
Druid是一個經過github開源的項目,github的特性,使得你很容易參與其中。這裏有詳細說明github.com/alibaba/dru…
23. Druid的發佈週期是怎樣?
Druid是一個活躍的項目,長期維護。每月有一個發佈窗口,除非遇到重大bug和很是緊急的需求,不然都是每月最多發佈一次。若是沒有足夠多的需求,發佈窗口就不會被使用。
24. 若是DruidDataSource在init的時候失敗了,再也不使用,是否須要close
是的,若是DruidDataSource再也不使用,必須調用close來釋放資源,釋放的資源包括關閉Create和Destory線程。
25. DruidDataSource支持哪些數據庫?
理論上說,支持全部有jdbc驅動的數據庫。實際測試過的有
數據庫 | 支持狀態 |
mysql | 支持,大規模使用 |
oracle | 支持,大規模使用 |
sqlserver | 支持 |
postgres | 支持 |
db2 | 支持 |
h2 | 支持 |
derby | 支持 |
sqlite | 支持 |
sybase | 支持 |
26. Oracle下jdbc executeBatch時,更新行數計算不正確
使用jdbc的executeBatch 方法,若是數據庫爲oracle,則不管是否成功更新到數據,返回值都是-2,而不是真正被sql更新到的記錄數,這是Oracle JDBC Driver的問題,Druid不做特殊處理。
27. Druid如何自動根據URL自動識別DriverClass的
Druid是根據url前綴來識別DriverClass的,這樣使得配置更方便簡潔。
前綴 | DriverCLass | 描述信息 |
jdbc:odps | com.aliyun.odps.jdbc.OdpsDriver | |
jdbc:derby | org.apache.derby.jdbc.EmbeddedDriver | |
jdbc:mysql | com.mysql.jdbc.Driver | |
jdbc:oracle | oracle.jdbc.driver.OracleDriver | |
jdbc:microsoft | com.microsoft.jdbc.sqlserver.SQLServerDriver | |
jdbc:sybase:Tds | com.sybase.jdbc2.jdbc.SybDriver | |
jdbc:jtds | net.sourceforge.jtds.jdbc.Driver | |
jdbc:postgresql | org.postgresql.Driver | |
jdbc:fake | com.alibaba.druid.mock.MockDriver | |
jdbc:mock | com.alibaba.druid.mock.MockDriver | |
jdbc:hsqldb | org.hsqldb.jdbcDriver | |
jdbc:db2 | COM.ibm.db2.jdbc.app.DB2Driver | DB2的JDBC Driver十分混亂,這個匹配不必定對 |
jdbc:sqlite | org.sqlite.JDBC | |
jdbc:ingres | com.ingres.jdbc.IngresDriver | |
jdbc:h2 | org.h2.Driver | |
jdbc:mckoi | com.mckoi.JDBCDriver | |
jdbc:cloudscape | COM.cloudscape.core.JDBCDriver | |
jdbc:informix-sqli | com.informix.jdbc.IfxDriver | |
jdbc:timesten | com.timesten.jdbc.TimesTenDriver | |
jdbc:as400 | com.ibm.as400.access.AS400JDBCDriver | |
jdbc:sapdb | com.sap.dbtech.jdbc.DriverSapDB | |
jdbc:JSQLConnect | com.jnetdirect.jsql.JSQLDriver | |
jdbc:JTurbo | com.newatlanta.jturbo.driver.Driver | |
jdbc:firebirdsql | org.firebirdsql.jdbc.FBDriver | |
jdbc:interbase | interbase.interclient.Driver | |
jdbc:pointbase | com.pointbase.jdbc.jdbcUniversalDriver | |
jdbc:edbc | ca.edbc.jdbc.EdbcDriver | |
jdbc:mimer:multi1 | com.mimer.jdbc.Driver |
28. 如何保存監控記錄
29. 我想Log輸出SQL執行的信息怎麼辦?
30. 如何配置Druid內置的log實現
附:示例項目:
github.com/windwant/sp…
https://github.com/windwant/spring-boot-service.git
https://github.com/windwant/spring-cloud-service.git