b2c信息网

您现在的位置是:首页 > 热点事件 > 正文

热点事件

druid数据库连接池源码(Druid连接池)

hacker2022-07-04 12:38:19热点事件104
本文目录一览:1、druid连接池SPRING怎样实现配置数据源2、

本文目录一览:

druid连接池 SPRING怎样实现配置数据源

Druid连接池及监控在Spring配置如下:

[html] view plaincopy

bean id="dataSource" class="bff1-be20-31a4-a850 com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"

!-- 基本属性 url、user、password --

property name="url" value="${jdbc_url}" /

property name="username" value="${jdbc_user}" /

property name="password" value="${jdbc_password}" /

!-- 配置初始化大小、最小、最大 --

property name="initialSize" value="1" /

property name="minIdle" value="1" /

property name="maxActive" value="20" /

!-- 配置获取连接等待超时的时间 --

property name="maxWait" value="60000" /

!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --

property name="timeBetweenEvictionRunsMillis" value="60000" /

!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --

property name="minEvictableIdleTimeMillis" value="300000" /

property name="validationQuery" value="SELECT 'x'" /

property name="testWhileIdle" value="true" /

property name="testOnBorrow" value="false" /

property name="testOnReturn" value="false" /

!-- 打开PSCache,并且指定每个连接上PSCache的大小 --

property name="poolPreparedStatements" value="true" /

property name="maxPoolPreparedStatementPerConnectionSize" value="20" /

!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 --

property name="filters" value="stat" /

/bean

2. 只要配置initialSize,maxActive就可以,目前这样的配置已经能够使用连接池,加入其实配置性能不好,官方文档里也不没加其它属性,连接池jar包免费下载。

然后是监控的配置:

web.xml

[html] view plaincopy

span style="white-space:pre" /spanfilter

filter-nameDruidWebStatFilter/filter-name

filter-classcom.alibaba.druid.support.http.WebStatFilter/filter-class

init-param

param-nameexclusions/param-name

param-value*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*/param-value

/init-param

/filter

filter-mapping

filter-nameDruidWebStatFilter/filter-name

url-pattern/*/url-pattern

/filter-mapping

filter可以监控webURl 访问

[html] view plaincopy

span style="white-space:pre" /spanservlet

servlet-nameDruidStatView/servlet-name

servlet-classcom.alibaba.druid.support.http.StatViewServlet/servlet-class

/servlet

servlet-mapping

servlet-nameDruidStatView/servlet-name

url-pattern/druid/*/url-pattern

为什么说druid是"最好的数据库连接池"?体现在哪些方面

现在常用的开源数据库连接池主要有c3p0、dbcp、proxool三种,其中:

Spring 推荐使用dbcp;

Hibernate 推荐使用c3p0和proxool;

1、 DBCP:apache

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

2、 C3P0:

C3P0是一个开源的jdbc连接池,它实现了数据源和jndi绑定,支持jdbc3规范和jdbc2的标准扩展。c3p0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。

3、 Proxool:Sourceforge

Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

对比:

1 相同时间内同等量的线程数和循环次数下:通过对三个连接池的三个标志性性能测试参数(Average,median,90%Line)进行比较发现:性能dbcp=c3p0proxool;

2 不同情况下的同一数据库连接池测试:通过观察 Average,median,90%Line三个参数发

现三个连接池的稳定性(三种连接池的三个测试参数的变化情况)依次:稳定性dbcp=c3p0proxool。

结论:

通过对三种数据库连接池的性能测试发现,proxool和 c3p0能够更好的支持高并发,但是在稳定性方面略逊于 dpcp;

Druid连接池自定义数据库密码加解密怎么实现

Druid的功能

1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

其中第三条说出了本博客的一个目的,详细过程如下:

1、首先配置Druid的数据库连接池

!--数据源加密操作--

bean id="dbPasswordCallback" class="be20-31a4-a850-09aa com.xuliugen.db.config.DBPasswordCallback" lazy-init="true"/

bean id="statFilter" class="31a4-a850-09aa-b8ce com.alibaba.druid.filter.stat.StatFilter" lazy-init="true"

property name="logSlowSql" value="true"/

property name="mergeSql" value="true"/

/bean

!

-- 数据库连接 --

bean id="readDataSource" class="a850-09aa-b8ce-d3f3 com.alibaba.druid.pool.DruidDataSource"

destroy-method="close" init-method="init" lazy-init="true"

property name="driverClassName" value="${driver}"/

property name="url" value="${url1}"/

property name="username" value="${username}"/

property name="password" value="${password}"/

!-- 初始化连接大小 --

property name="initialSize" value="${initialSize}"/

!-- 连接池最大数量 --

property name="maxActive" value="${maxActive}"/

!-- 连接池最小空闲 --

property name="minIdle" value="${minIdle}"/

!-- 获取连接最大等待时间 --

property name="maxWait" value="${maxWait}"/

!-- --

property name="defaultReadOnly" value="true"/

property name="proxyFilters"

list

ref bean="statFilter"/

/list

/property

property name="filters" value="${druid.filters}"/

property name="connectionProperties" value="password=${password}"/

property name="passwordCallback" ref="dbPasswordCallback"/

property name="testWhileIdle" value="true"/

property name="testOnBorrow" value="false"/

property name="testOnReturn" value="false"/

property name="validationQuery" value="SELECT 'x'"/

property name="timeBetweenLogStatsMillis" value="60000"/

!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --

property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}"/

!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --

property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/

/bean

其中要注意的是:

bean id="dbPasswordCallback" class="09aa-b8ce-d3f3-34b2 com.xuliugen.db.config.DBPasswordCallback" lazy-init="true"/

property name="passwordCallback" ref="dbPasswordCallback"/

为什么说Druid是“最好的数据库连接池”

1、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

2、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

3、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

4、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

发表评论

评论列表

  • 鸢旧瘾然(2022-07-04 16:32:11)回复取消回复

    ize}"/ !-- 连接池最大数量 -- property name="maxActive" value="${maxActive}"/ !-- 连接池最小空闲 -- property name="minIdle" value="${

  • 丑味鸠骨(2022-07-04 16:45:35)回复取消回复

    ordCallback" ref="dbPasswordCallback"/为什么说Druid是“最好的数据库连接池”1、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能

  • 澄萌做啡(2022-07-04 14:03:08)回复取消回复

    导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。4、SQL执行日志,Druid提供了不同的LogFilte

  • 语酌酌锦(2022-07-04 20:12:34)回复取消回复

    据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。3、SQL执行日志,Druid提供了不同的LogFi