天天看點

Druid 介紹及配置

  1. Druid是什麼?

    Druid是Java語言中最好的資料庫連接配接池。Druid能夠提供強大的監控和擴充功能。

  2. 在哪裡下載下傳druid

    正式版本下載下傳:

    maven中央倉庫: http://central.maven.org/maven2/com/alibaba/druid/

  3. 怎麼擷取Druid的源碼

    Druid是一個開源項目,源碼托管在github上,源代碼倉庫位址是 https://github.com/alibaba/druid。同時每次Druid釋出正式版本和快照的時候,都會把源碼打包,你可以從上面的下載下傳位址中找到相關版本的源碼

  4. 怎麼配置maven

    Druid 0.1.18 之後版本都釋出到maven中央倉庫中,是以你隻需要在項目的pom.xml中加上dependency就可以了。例如:

    com.alibaba druid ${druid-version}

也可以選擇 Maven倉庫查找公共的倉庫位址:http://www.mvnrepository.com/artifact/com.alibaba/druid

  1. 怎麼打開Druid的監控統計功能

    Druid的監控統計功能是通過filter-chain擴充實作,如果你要打開監控統計功能,配置StatFilter,具體看這裡:https://github.com/alibaba/druid/wiki/配置_StatFilter

  2. 怎樣使用Druid的内置監控頁面

    内置監控頁面是一個Servlet,具體配置看這裡:https://github.com/alibaba/druid/wiki/配置_StatViewServlet配置

  3. 内置監控中的Web和Spring關聯監控怎麼配置?

    Web關聯監控配置

    https://github.com/alibaba/druid/wiki/配置_配置WebStatFilter

    Spring關聯監控配置

    https://github.com/alibaba/druid/wiki/配置_Druid和Spring關聯監控配置

  4. 怎麼配置防禦SQL注入攻擊

    Druid提供了WallFilter,它是基于SQL語義分析來實作防禦SQL注入攻擊的。具體配置看這裡:https://github.com/alibaba/druid/wiki/配置-wallfilter

  5. Druid有沒有參考配置

    不同的業務場景需求不同,你可以使用我們的參考配置,但建議你仔細閱讀相關文檔,了解清楚之後做定制配置。https://github.com/alibaba/druid/wiki/配置_DruidDataSource參考配置

  6. 我想日志記錄JDBC執行的SQL,如何配置

    Druid提供了Log4jFilter、CommonsLogFilter和Slf4jFilter,具體配置看這裡https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_LogFilter

  7. 我的程式可能産生連接配接洩漏了,有什麼辦法?

    Druid提供了多種監測連接配接洩漏的手段,具體看這裡:https://github.com/alibaba/druid/wiki/連接配接洩漏監測

  8. 在Druid中使用PSCache會有記憶體占用過大問題麼?

    連接配接Oracle資料庫,打開PSCache,在其他的資料庫連接配接池都會存在記憶體占用過多的問題,Druid是唯一解決這個問題的連接配接池。具體看這裡:https://github.com/alibaba/druid/wiki/Oracle資料庫下PreparedStatementCache記憶體問題解決方案

  9. 有沒有和其他資料庫連接配接池的對比?

    各種資料庫連接配接池對比https://github.com/alibaba/druid/wiki/%E5%90%84%E7%A7%8D%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E5%AF%B9%E6%AF%94

  10. 從其他連接配接池遷移要注意什麼?

    不同連接配接池的參數參照對比: http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=6947005

    DBCP遷移 https://github.com/alibaba/druid/wiki/DBCP遷移

  11. Druid中有沒有類似Jboss DataSource中的ExceptionSorter

    ExceptionSorter是JBoss DataSource中的優秀特性,Druid也有一樣功能的ExceptionSorter,但不用手動配置,自動識别生效的。具體看這裡:https://github.com/alibaba/druid/wiki/ExceptionSorter_cn

  12. Druid中的maxIdle為什麼是沒用的?

    maxIdle是Druid為了友善DBCP使用者遷移而增加的,maxIdle是一個混亂的概念。連接配接池隻應該有maxPoolSize和minPoolSize,druid隻保留了maxActive和minIdle,分别相當于maxPoolSize和minPoolSize。

  13. 我的應用配置的是JNDI資料源,可以用DruidDataSource麼?

    DruidDataSource支援JNDI配置,具體看這裡:https://github.com/alibaba/druid/wiki/配置_JNDI_Tomcat

    具體實作的類是這個:com.alibaba.druid.pool.DruidDataSourceFactory,你可以閱讀代碼加深了解。

  14. 我的應用已使用DBCP,是代碼中寫死的,怎樣更換為Druid?

    可以的,Druid提供了一個中完全平滑遷移DBCP的辦法。

  1. 從http://repo1.maven.org/maven2/com/alibaba/druid/druid-wrapper/ 下載下傳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,隻能夠通過這種方法來更換。

  1. 我想試用快照版本,怎麼擷取?

    直接擷取快照版本的位址是:http://code.alibabatech.com/mvn/snapshots/com/alibaba/druid/ ,使用快照版本建議加入我們QQ群 92748305,遇到問題直接回報給我們。

  2. 有一些SQL執行很慢,我希望日志記錄下來,怎麼設定?

    在StatFilter配置中有慢SQL執行日志記錄,看這裡https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter

  3. 我希望加密我的資料庫密碼怎麼辦?

    運維和DBA都不希望把密碼明文直接寫在配置檔案中,Druid提供了資料庫秘密加密的功能。具體看這裡:https://github.com/alibaba/druid/wiki/使用ConfigFilter

  4. 如何參與Druid的開發

    Druid是一個通過github開源的項目,github的特性,使得你很容易參與其中。這裡有詳細說明https://github.com/alibaba/druid/wiki/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E

  5. Druid的釋出周期是怎樣?

    Druid是一個活躍的項目,長期維護。每個月有一個釋出視窗,除非遇到重大bug和非常緊急的需求,否則都是每個月最多釋出一次。如果沒有足夠多的需求,釋出視窗就不會被使用。

  6. 如果DruidDataSource在init的時候失敗了,不再使用,是否需要close

    是的,如果DruidDataSource不再使用,必須調用close來釋放資源,釋放的資源包括關閉Create和Destory線程。

  7. DruidDataSource支援哪些資料庫?

    理論上說,支援所有有jdbc驅動的資料庫。實際測試過的有

資料庫 支援狀态

mysql 支援,大規模使用

oracle 支援,大規模使用

sqlserver 支援

postgres 支援

db2 支援

h2 支援

derby 支援

sqlite 支援

sybase 支援

26. Oracle下jdbc executeBatch時,更新行數計算不正确

使用jdbc的executeBatch 方法,如果資料庫為oracle,則無論是否成功更新到資料,傳回值都是-2,而不是真正被sql更新到的記錄數,這是Oracle JDBC Driver的問題,Druid不作特殊處理。

  1. 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. 如何儲存監控記錄

https://github.com/alibaba/druid/wiki/怎麼儲存Druid的監控記錄

  1. 我想Log輸出SQL執行的資訊怎麼辦?

    https://github.com/alibaba/druid/wiki/配置_LogFilter

  2. 如何配置Druid内置的log實作

    https://github.com/alibaba/druid/wiki/配置druid内置的log實作

附:示例項目:

https://github.com/windwant/spring-dubbo-service.git

https://github.com/windwant/spring-boot-service.git

https://github.com/windwant/spring-cloud-service.git

原文:https://www.cnblogs.com/niejunlei/p/5977895.html

繼續閱讀