tomcat jdbc pool

c3p0,dbcp与druid

首先,我们要明白在javaweb项目中,我们需要和数据库进行打交道,而由于数据库又分为了多个种类和多个不同的厂商。为了方便开发,java定义了一套针对数据库连接的一套规范,也就是jdbc。在这套规范中,定义了多个接口,不同的数据库厂商具体的去实现这些接口。

程序员在java中直接使用接口中定义的方法就可以操作各种类型的数据库。


回到dbcp,它是数据库连接池,由Apache开发,是jdbc范畴中的。它的原理是维护多个连接对象Connection,在web项目要连接数据库时直接使用它维护的对象进行连接,省去每次都要创建连接对象的麻烦。提高效率和减少内存使用。

而c3p0呢,它也是一个jdbc连接池,和dbcp一样为了解决效率问题而存在,但有一些自己的特性和dbcp最大的不同在于它可以自动回收连接,dbcp需要自己手动释放资源返回。不过dbcp效率比较高。

druid 则是阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个 SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。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分析语义实现的。

  看上面应该了解到功能上druid很厉害。


tomcat jdbc pool 





猜你喜欢

转载自blog.csdn.net/u011768625/article/details/80498322