您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Java > Druid数据库连接池说明
Druid数据库连接池Druid简介Druid是阿里巴巴的一个开源数据库连接池,基于Apache2.0协议,可以免费自由使用。但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQLParser。Druid能够提供强大的监控和扩展功能。但Druid只支持JDK6以上版本,不支持JDK1.4和JDK5.0。Druid下载:maven中央仓库::源代码下载地址:支持的数据库Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQLServer、H2等等。Druid针对Oracle和MySql做了特别优化,比如Oracle的PSCache内存占用优化,MySql的ping检测优化。Druid基本配置Druid数据库连接池的配置与传统的DBCP、C3P0、Proxool等数据连接池的配置基本相同,下面以使用了Spring的项目为例配置Druid数据库连接池。1.在上述的Druid下载路径中下载最新的Druidjar包,目前最新的为druid-1.0.2.jar2.打开项目中的spring配置文件applicationContext.xml文件,加入如下配置!--配置Druid连接池--beanid=dataSourceclass=com.alibaba.druid.pool.DruidDataSourceinit-method=initdestroy-method=close!--基本的url、user、password配置--propertyname=urlvalue=jdbc:mysql://localhost:3306/cendev?useUnicode=true&characterEncoding=utf8/propertypropertyname=usernamevalue=root/propertypropertyname=passwordvalue=mysql/property!--配置大小、最大、最小、超时时间--propertyname=maxActivevalue=100/propertyname=initialSizevalue=1/propertyname=maxWaitvalue=3600000/propertyname=minIdlevalue=30/!--配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒--propertyname=timeBetweenEvictionRunsMillisvalue=60000/!--配置一个连接在池中最小生存的时间,单位是毫秒--propertyname=minEvictableIdleTimeMillisvalue=300000/propertyname=validationQueryvalue=selectCURRENT_DATE/propertyname=testWhileIdlevalue=true/propertyname=testOnBorrowvalue=false/propertyname=testOnReturnvalue=false/!--打开PSCache,并且指定每个连接上PSCache的大小--propertyname=poolPreparedStatementsvalue=true/propertyname=maxPoolPreparedStatementPerConnectionSizevalue=20/!--配置防御SQL注入的filters、监控统计拦截的filters--propertyname=filtersvalue=wall,stat/!--连接泄露(未关闭)检测removeAbandoned开启会对性能造成影响,怀疑有泄露情况再打开--propertyname=removeAbandonedvalue=true/property!--超时关闭时间1800秒,即30分钟。连接30分钟仍未关闭,则会被收回--propertyname=removeAbandonedTimeoutvalue=1800/property/bean!--配置Druid连接池结束--3.上面配置中的propertyname=filtersvalue=wall,stat/该配置是配置Druid的防御sql注入的filter和监控统计拦截的filter。开启监控拦截另外还需在项目的web.xml中配置相应的Servlet。请在web.xml中加入如下配置。!--配置druid连接池监控--servletservlet-nameDruidStatView/servlet-nameservlet-classcom.alibaba.druid.support.http.StatViewServlet/servlet-class/servletservlet-mappingservlet-nameDruidStatView/servlet-nameurl-pattern/druid/*/url-pattern/servlet-mapping4.添加完上述配置Druid的基本配置即可,重新启动项目,输入端口/应用名称/druid/index.html即可打开Druid内置的监控系统。例如:内置的监控系统页面如下图:通过上述配置后可以在此监控系统中查看的包括首页、数据源、SQL监控、SQL防火墙(SQL防火墙的filter即wall)、session监控。至于Web应用、URI监控、Spring监控等暂不能查看,加入后续的配置即可。Druid内置监控中的WEB关联监控配置使用内置监控中的WEB关联监控,需要在项目的web.xml文件中加入如下配置:!--webURI监控配置--filterfilter-nameDruidWebStatFilter/filter-namefilter-classcom.alibaba.druid.support.http.WebStatFilter/filter-classinit-paramparam-nameexclusions/param-nameparam-value*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,*.swf,/druid/*/param-value/init-param/filterfilter-mappingfilter-nameDruidWebStatFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping欲了解更多Druid关于WEB监控配置,请移步:内置监控中的Spring关联监控配置使用内置监控中的Spring关联监控,需要在项目中的spring配置文件applicationContext.xml中加入如下配置:!--配置Druid的Spring拦截器--beanid=druid-stat-interceptorclass=com.alibaba.druid.support.spring.stat.DruidStatInterceptor/beanbeanid=druid-stat-pointcutclass=org.springframework.aop.support.JdkRegexpMethodPointcutscope=prototypepropertyname=patternslistvaluecom.censoft.app.controller.*/valuevaluecom.censoft.app.dao.*/valuevaluecom.censoft.app.service.*/value/list/property/beanaop:configaop:advisoradvice-ref=druid-stat-interceptorpointcut-ref=druid-stat-pointcut//aop:configlist中配置的为需要监控的包路径。欲了解更多关于Druid的Spring监控配置请移步:内置监控系统简单介绍输入端口/应用名称/druid/index.html即可打开Druid内置的监控系统。例如:下面就Druid监控系统中的各功能模块简单介绍一下。首页展示Druid版本、jdk版本、重置次数、启动时间等基本信息。数据源数据源菜单显示数据库连接池的基本信息,如连接地址、连接类型、最大连接数、最小连接数、初始连接等信息。可通过逻辑连接打开次数、逻辑连接关闭次数来判断系统中是否存在有连接未关闭的情况(正常情况下打开次数和关闭次数应该一致)SQL监控SQL监控显示系统已执行过的每条SQL语句的执行情况。通过执行数、执行时间、最慢时间、事务中、错误数、最大并发、执行时间分布等统计维度来展现。需要说明的有:执行数:本条sql语句已执行的次数执行时间:本条sql语句累计执行时间(单位:毫秒)最慢:本条sql语句执行最慢一次的耗时(单位:毫秒)执行时间分布【--------】:这8个–分别代表8个耗时区间的次数,从左至右依次是:0-1毫秒次数、1-10毫秒次数、10-100毫秒次数、100-1000毫秒次数、1-10秒次数、10-100秒次数、100-1000秒次数、大于1000秒次数。如下图中的这一条数据:可以发现:执行时间上本条sql语句有10次是在1-10毫秒内就执行完成,其他耗时区间的执行次数都为0.执行+RS时分布与此同理。通过耗时区间,可以发现SQL执行的效率情况,可以反映出数据库或应用是否稳定。SQL防火墙SQL防火墙分防御统计、表访问统计、函数调用统计、SQL防御统计-白名单、SQL防御统计-黑名单这几项。其中若是涉嫌SQL注入的SQL语句将被拦截,出现在SQL防御统计-黑名单中。详细的SQL防御的wallfilte配置请移步:应用Web应用主要统计本应用的并发、请求、事务提交、事务回滚等信息,另外统计了本应用在各操作系统上、各浏览器上的访问次数。URI监控URI监控统计了应用中各url的访问次数、请求时间、并发数等信息。Session监控Session监
本文标题:Druid数据库连接池说明
链接地址:https://www.777doc.com/doc-2910368 .html