druid數據源


Druid是一個JDBC組件,它包括三部分: 

  • DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的插件體系。 

  • DruidDataSource 高效可管理的數據庫連接池。 

  • SQLParser 

Druid可以做什么? 

1) 可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。 

2) 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。 

3) 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。 

4) SQL執行日志,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。 

擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴展插件。 

[摘自OSChina:http://www.oschina.net/p/druid/]

使用druid的方式:

第一步:在spring中配置數據源

在spring中配置數據源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
< bean  id = "dataSource"  class = "com.alibaba.druid.pool.DruidDataSource"  destroy-method = "close" >
     <!-- 基本配置,訪問數據庫的driver、url、user、password -->
     < property  name = "driverClassName"  value = "${jdbc.druid.driverClassName}"  />
     < property  name = "url"  value = "${jdbc.druid.url}"  />
     < property  name = "username"  value = "${jdbc.druid.username}"  />
     < property  name = "password"  value = "${jdbc.druid.password}"  />
     <!-- 配置初始化大小、最大、最小 -->
     < property  name = "initialSize"  value = "${jdbc.druid.initialSize}"  />
     < property  name = "maxActive"  value = "${jdbc.druid.maxActive}"  />
     < property  name = "minIdle"  value = "${jdbc.druid.minIdle}"  />
     <!-- 配置獲取連接等待超時的時間,單位是毫秒 -->
     < property  name = "maxWait"  value = "${jdbc.druid.maxWait}"  />
     <!-- 配置監控統計攔截的filters -->
     < property  name = "filters"  value = "${jdbc.druid.filters}"  />
     <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
     < property  name = "timeBetweenEvictionRunsMillis"  value = "${jdbc.druid.timeBetweenEvictionRunsMillis}"  />
     <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
     < property  name = "minEvictableIdleTimeMillis"  value = "${jdbc.druid.minEvictableIdleTimeMillis}"  />
     <!-- 用來檢測連接是否有效的sql,要求是一個查詢語句。如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會其作用。 -->
     <!-- 查詢語句需要根據不同的數據源進行調整設置 -->
     < property  name = "validationQuery"  value = "${jdbc.druid.validationQuery}"  />
     <!-- 建議配置為true,不影響性能,並且保證安全性。申請連接的時候檢測,如果空閑時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。 -->
     < property  name = "testWhileIdle"  value = "${jdbc.druid.testWhileIdle}"  />
     <!-- 申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。 -->
     < property  name = "testOnBorrow"  value = "${jdbc.druid.testOnBorrow}"  />
     <!-- 歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能 -->
     < property  name = "testOnReturn"  value = "${jdbc.druid.testOnReturn}"  />
     <!-- 對於長時間不使用的連接強制關閉 -->
     < property  name = "removeAbandoned"  value = "${jdbc.druid.removeAbandoned}"  />
     <!-- 超過30分鍾開始關閉空閑連接 -->
     < property  name = "removeAbandonedTimeout"  value = "${jdbc.druid.removeAbandonedTimeout}"  />
     <!-- 將當前關閉動作記錄到日志 -->
     < property  name = "logAbandoned"  value = "${jdbc.druid.logAbandoned}"  />
     <!-- 設置數據庫事務是否自動提交,默認值為true -->
     < property  name = "defaultAutoCommit"  value = "${jdbc.druid.defaultAutoCommit}"  />
     <!-- 是否緩存preparedStatement,也就是PSCache。PSCache對支持游標的數據庫性能提升巨大。-->
     < property  name = "poolPreparedStatements"  value = "${jdbc.druid.poolPreparedStatements}"  />
     <!-- 要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。 -->
     < property  name = "maxOpenPreparedStatements"  value = "${jdbc.druid.maxOpenPreparedStatements}"  />
     < property  name = "maxPoolPreparedStatementPerConnectionSize"  value = "${jdbc.druid.maxPoolPreparedStatementPerConnectionSize}"  />
</ bean >

第二步:配置相關參數

配置相關參數

#根據不同的數據庫信息需要作出相應的調整,如driverClassName、url、maxActive、minIdle、maxWait、validationQuery等

jdbc.druid.driverClassName = org.hsqldb.jdbcDriver
jdbc.druid.url = jdbc:hsqldb:file:d:/tmp/User1.db;hsqldb.write_delay=true
jdbc.druid.username = sa
jdbc.druid.password = 
jdbc.druid.initialSize = 5
jdbc.druid.maxActive = 20
jdbc.druid.minIdle = 10
jdbc.druid.maxWait = 3000
jdbc.druid.filters = stat
jdbc.druid.timeBetweenEvictionRunsMillis = 60000
jdbc.druid.minEvictableIdleTimeMillis = 300000
jdbc.druid.validationQuery = SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS
jdbc.druid.testWhileIdle = true
jdbc.druid.testOnBorrow = true
jdbc.druid.testOnReturn = false
jdbc.druid.removeAbandoned = true
jdbc.druid.removeAbandonedTimeout = 1800
jdbc.druid.logAbandoned = false
jdbc.druid.defaultAutoCommit = false
jdbc.druid.poolPreparedStatements = false
jdbc.druid.maxOpenPreparedStatements = 0
jdbc.druid.maxPoolPreparedStatementPerConnectionSize = 0

第三步:配置監控頁面

訪問頁面配置
1
2
3
4
5
6
7
8
< servlet >
     < servlet-name >DruidStatView</ servlet-name >
     < servlet-class >com.alibaba.druid.support.http.StatViewServlet</ servlet-class >
</ servlet >
< servlet-mapping >
     < servlet-name >DruidStatView</ servlet-name >
     < url-pattern >/druid/*</ url-pattern >
</ servlet-mapping >

 

通過以上配置,在應用啟動后訪問http://localhost:8080/prjname/druid/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM