Druid连接池原理
1、dbcp没有自动的去回收空闲连接的功能。 C3P0:C3P0是一个开源的jdbc连接池,它实现了数据源和jndi绑定,支持jdbc3规范和jdbc2的标准扩展。c3p0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。
2、监控连接池的物理连接创建和销毁次数、逻辑连接的申请和关闭次数、非空等待次数、PSCache命中率等。其次,方便扩展。Druid提供了Filter-Chain模式的扩展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比如说性能监控、SQL审计、用户名密码加密、日志等等。
3、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
数据库连接池的Java连接池
1、在Java中开源的数据库连接池有以下几种 :C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate 一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。Proxool:是一个Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。
2、数据库连接池在Java中是通过预先在内存中存储数据库连接对象,以提高系统效率和资源管理的一种策略。当用户需要数据库访问时,从连接池获取已建立的空闲连接,使用完毕后归还回池,由连接池负责连接的建立和释放。
3、DBCP:Apache DBCP(DataBase connection pool)数据库连接池。是Apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。
4、testOnBorrow、testOnReturn、testWhileIdle,他们的意思是当是取得连接、返回连接或连接空闲时是否进行有效性验证(即是否还和数据库连通的),默认都为false。
5、数据库连接池的主要操作如下:(1)建立数据库连接池对象(服务器启动)。(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。(3)对于一个数据库访问请求,直接从连接池中得到一个连接。
Druid数据连接池Druid
Druid是一个全面的数据库连接管理解决方案,它不仅是一个连接池,还包括ProxyDriver、内置JDBC组件库和SQL解析器。Druid兼容多种数据库,如Oracle、MySQL、Derby、PostgreSQL、SQL Server和H2等,对Oracle和MySQL进行了专门优化,如内存占用优化和ping检测。
可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。3) 数据库密码加密。
Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。 阿里巴巴是一个重度使用关系数据库的公司,我们在生产环境中大量的使用Druid,通过长期在极高负载的生产环境中实际使用、修改和完善,让Druid逐步发展成最好的数据库连接池。
druid和hikaridatasource哪个好
性能方面 hikaridruidtomcat-jdbcdbcpc3p0 。hikari的高性能得益于最大限度的避免锁竞争。druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。