Druid连接池介绍及使用
Druid连接池介绍及使用
- Druid的简介
Druid是Java语言中最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过生产环境大规模部署的严苛考验。
Druid连接池为监控而生,内置强大的监控功能,监控特性不影响整体性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为
- 哪里下载druid
maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/
- Github上Druid常见问题
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
- Druid是一个JDBC组件,包括三个部分
基于Filter-Chain模式的插件体系。
DruidDataSource 高效可管理的数据库连接池。
SQLParser
- 支持哪些数据库
| 数据库 | 支持状态 |
| mysql | 支持,大规模使用 |
| oracle | 支持,大规模使用 |
| sqlserver | 支持 |
| postgres | 支持 |
| db2 | 支持 |
| h2 | 支持 |
| derby | 支持 |
| sqlite | 支持 |
| sybase | 支持 |
- 竞品对比
| 功能类别 | 功能 | Druid | DBCP | Tomcat-jdbc | C3P0 |
| 性能 | PSCache | 是 | 是 | 是 | 是 |
| LRU | 是 | 是 | 是 | 是 | |
| SLB负载均衡支持 | 是 | 否 | 否 | 否 | |
| 稳定性 | ExceptionSorter | 是 | 否 | 否 | 否 |
| 扩展 | 扩展 | Filter |
| JdbcIntercepter |
|
| 监控 | 监控方式 | jmx/log/http | jmx | jmx | jmx |
| 支持SQL级监控 | 是 | 否 | 否 | 否 | |
| Spring/Web关联监控 | 是 | 否 | 否 | 否 | |
|
| 诊断支持 | LogFilter | 否 | 否 | 否 |
| 连接泄露诊断 | logAbandoned | 否 | 否 | 否 | |
| 安全 | SQL防注入 | 是 | 无 | 无 | 无 |
| 支持配置加密 | 是 | 否 | 否 | 否 |
LRU 是一个性能关键指标,特别Oracle,每个Connection对应数据库端的一个进程,如果数据库连接池遵从LRU,有助于数据库服务器优化,这是重要的指标。在测试中,Druid、DBCP、Proxool是遵守LRU的。BoneCP、C3P0则不是。
PSCache是数据库连接池的关键指标。在Oracle中,类似SELECT NAME FROM USER WHERE ID = ?这样的SQL,启用PSCache和不启用PSCache的性能可能是相差一个数量级的。Proxool是不支持PSCache的数据库连接池,如果你使用Oracle、SQL Server、DB2、Sybase这样支持游标的数据库,那你就完全不用考虑Proxool。
Oracle 10系列的Driver,如果开启PSCache,会占用大量的内存,必须做特别的处理,启用内部的EnterImplicitCache等方法优化才能够减少内存的占用。这个功能只有DruidDataSource有。如果你使用的是Oracle Jdbc,你应该毫不犹豫采用DruidDataSource。
ExceptionSorter是一个很重要的容错特性,如果一个连接产生了一个不可恢复的错误,必须立刻从连接池中去掉,否则会连续产生大量错误。这个特性,目前只有JBossDataSource和Druid实现。Druid的实现参考自JBossDataSource,经过长期生产反馈补充
- Druid使用
- Maven引入
com.alibaba druid 1.1.9
- Druid结合spring配置
- 数据库密码加密
进入jar包所在目录
java -cp druid-1.1.9.jar com.alibaba.druid.filter.config.ConfigTools XXXXX
web.jdbc.url=jdbc:mysql://XXXX:3306/XXX?useOldAliasMetadataBehavior=true&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=trueweb.jdbc.username=用户名web.jdbc.password=passwordweb.jdbc.publickey=publicKey
若需要使用原始密码
注释connectionProperties 属性即可
- 慢SQL记录提醒
- SQL防御防火墙
待研究
- 开启web监控
DruidWebStatFilter com.alibaba.druid.support.http.WebStatFilter exclusions *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* profileEnable true
DruidWebStatFilter /* DruidStatView com.alibaba.druid.support.http.StatViewServlet DruidStatView /druid/*
- 开启spring类监控
com.jf.uhrunit.service.* com.jf.uhrunit.queryhelper.*
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
