不只是开源最好用的JAVA数据连接池 Alibaba Druid

不只是开源最好用的JAVA数据连接池 Alibaba Druid

乐呵狗

百家号 17-10-24 22:21

今天是1024程序员节,先祝各位节日快乐,然后给大家一大杀技。看图。

扎心了有没有?好了,回归正题。既然要说数据连接池,那么先说明下什么是数据连续池。

在没有数据连接池的时候,所有的数据连接都是直接访问数据库的,但现在大型网站动不动数亿的点击和访问,很容易就会把数据库服务器弄宕机,而且每次连接断开需要繁琐的步骤和时间开销,容易导致资源泄露和长时间无响应等问题。

数据连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。

常见的开源JAVA数据连接池有:

C3P0:一个开放源代码的JDBC连接池,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

DBCP(DataBase connection pool): apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

但是今天我们要讲的是最好用的,那就是Alibaba Druid数据连接池。

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。

Druid不仅仅是一个数据库连接池。Druid还是它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。

Druid扩展JDBC的一些限制,让程序员能够如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,还可以通过定制来实现自己需要的功能。Druid是一个开源项目,基于Apache 2.0协议,你可以免费自由使用。Druid只支持JDK 6以上版本,不支持JDK 1.4和JDK 5.0。

Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。且对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。

如果你要用java解析一个SQL语句,并实现改造,Druid是一个非常好的选择。Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。 通过实验得出在解析简单SQL语句用时10微秒以内,复杂SQL用时30微秒。

通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter就是通过Druid的SQL Parser分析语义实现的。

从DBCP迁移最方便,把org.apache.commons.dbcp.BasicDataSource修改为om.alibaba.druid.pool.DruidDataSource就好了,从C3P0迁移也是十分方便的。

欢迎关注回复交流讨论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值