一、关于Druid

Druid是一个JDBC组件,它包括三部分:

  • DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。

  • DruidDataSource 高效可管理的数据库连接池。

  • SQLParser

Druid可以做什么?

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

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

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

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

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

Druid开源中国社区地址:http://www.oschina.NET/p/druid

二、工程配置

1、工程引入druid-1.0.15.jar

2、数据源配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="false">
<property name="driverClassName" value="#{db.driver}" /> <property name="url" value="#{db.url}" /> <property name="username" value="#{db.user}" /> <property name="password" value="#{db.password}" /> <property name="initialSize" value="1" /> <property name="maxActive" value="50" /> <property name="maxIdle" value="0" /> <property name="maxWait" value="30000" /> <property name="filters" value="stat,wall" /> <property name="timeBetweenEvictionRunsMillis" value="3000" /> <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" /> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> </bean>

详细参数说明

配置 缺省值 说明
name   配置这个属性的意义在于,如果存在多个数据源,监控的时候

可以通过名字来区分开来。如果没有配置,将会生成一个名字,

格式是:”DataSource-” + System.identityHashCode(this)
jdbcUrl   连接数据库的url,不同数据库不一样。例如:

mysql : jdbc:mysql://10.20.153.104:3306/druid2 

oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
username   连接数据库的用户名
password   连接数据库的密码。如果你不希望密码直接写在配置文件中,

可以使用ConfigFilter。详细看这里:

https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
driverClassName 根据url自动识别 别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,

然后选择相应的driverClassName
initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,

或者第一次getConnection时
maxActive 8 最大连接池数量
maxIdle 8 已经不再使用,配置了也没效果
minIdle   最小连接池数量
maxWait   获取连接时最大等待时间,单位毫秒。配置了maxWait之后,

缺省启用公平锁,并发效率会有所下降,

如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedStatements false 是否缓存preparedStatement,也就是PSCache。

PSCache对支持游标的数据库性能提升巨大,比如说oracle。

在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。

5.5及以上版本有PSCache,建议开启。
maxOpenPreparedStatements -1 要启用PSCache,必须配置大于0,当大于0时,

poolPreparedStatements自动触发修改为true。

在Druid中,不会存在Oracle下PSCache占用内存过多的问题,

可以把这个数值配置大一些,比如说100
validationQuery   用来检测连接是否有效的sql,要求是一个查询语句。

如果validationQuery为null,testOnBorrow、testOnReturn、

testWhileIdle都不会其作用。
testOnBorrow true 申请连接时执行validationQuery检测连接是否有效,

做了这个配置会降低性能。
testOnReturn false 归还连接时执行validationQuery检测连接是否有效,

做了这个配置会降低性能
testWhileIdle false 建议配置为true,不影响性能,并且保证安全性。

申请连接的时候检测,如果空闲时间大于

timeBetweenEvictionRunsMillis,

执行validationQuery检测连接是否有效
timeBetweenEvictionRunsMillis   有两个含义:

1) Destroy线程会检测连接的间隔时间

 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
numTestsPerEvictionRun   不再使用,一个DruidDataSource只支持一个EvictionRun
minEvictableIdleTimeMillis    
connectionInitSqls   物理连接初始化的时候执行的sql
exceptionSorter 根据dbType自动识别 当数据库抛出一些不可恢复的异常时,抛弃连接
filters   属性类型是字符串,通过别名的方式配置扩展插件,

常用的插件有:

监控统计用的filter:stat 

日志用的filter:log4j

 防御sql注入的filter:wall
proxyFilters   类型是List<com.alibaba.druid.filter.Filter>,

如果同时配置了filters和proxyFilters,

是组合关系,并非替换关系

3、Web.xml配置

<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

至此基本配置完成,可以查看内置监控页面了,路径是/druid/index.html,

完整路径是http://localhost:8080/druid/index.html

如果还需要使用Web应用、URI监控、Session监控、spring监控等则还需要继续增加配置。

4、Wen应用配置

WebStatFilter用于采集web-jdbc关联监控的数据

在Web.xml中增加配置,就可以使用Web应用、URI监控、Session监控等功能

<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
<init-param>
<param-name>profileEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>principalCookieName</param-name>
<param-value>USER_COOKIE</param-value>
</init-param>
<init-param>
<param-name>principalSessionName</param-name>
<param-value>USER_SESSION</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

5、Spring监控配置

在Spring配置文件中增加

<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
</bean>
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype"> <property name="patterns">
   &lt;list&gt;

       &lt;value&gt;com.company.bussines.service.*&lt;/value&gt;

       &lt;value&gt;com.company.bussines.dao.*&lt;/value&gt;

   &lt;/list&gt;

</property>

</bean>

<aop:config proxy-target-class="true">

<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />

</aop:config>

所有配置完成。

转:http://blog.csdn.net/linlzk/article/details/47418685

<div class="postDesc">posted on <span id="post-date">2017-03-14 10:38</span> <a href="http://www.cnblogs.com/xijin-wu/">xijin_wu</a> 阅读(<span id="post_view_count">2940</span>) 评论(<span id="post_comment_count">0</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=6547237" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(6547237);return false;">收藏</a></div>

druid监控sql完整版的更多相关文章

  1. SpringMVC4+MyBatis+SQL Server2014+druid 监控SQL运行情况

    前言 在基于SpringMVC+MyBatis的开发过程中,我们希望能看到自己手写SQL的执行情况,在开发阶段我们可以配置log4j在控制台里基于debug模式查看,那么上线后,在生产声我们想查看SQ ...

  2. springboot整合mybatis,druid,mybatis-generator插件完整版

    一 springboot介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  3. druid监控sql

    我这里是以运维的角度查看sql, 前面的配置需要开发配合,参考:https://blog.csdn.net/u010391342/article/details/80606482 1.首先在注册中心( ...

  4. 应用Druid监控SQL语句的执行情况

    Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  5. 应用Druid监控SQL语句的执行情况(转)

    Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  6. 应用Druid监控SQL语句的执行情况--转载

    Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  7. 精通SpringBoot--整合druid监控SQL执行

    咳咳,今天我们做些简单而实用的东西,使用springboot 整合alibaba的driud数据库监控工具.alibaba已经提供了spring-boot-starter的jar包了.先看pom.xm ...

  8. 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版

    背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...

  9. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十一)数据层优化-druid监控及慢sql记录

    本文提要 前文也提到过druid不仅仅是一个连接池技术,因此在将整合druid到项目中后,这一篇文章将去介绍druid的其他特性和功能,作为一个辅助工具帮助提升项目的性能,本文的重点就是两个字:监控. ...

随机推荐

  1. sqli-libs(42-45(post型)关)

    Less_42 查看源代码,可以看到password没有经过mysqli_real_escape_string()函数进行处理,所以这个时候我们在这个位置进行构造 使用admin 111111进行登录 ...

  2. Codeforces Round #610 (Div. 2)C(贪心,思维)

    沿时间轴枚举,发现关键时间点在于新题目被锁定的前一时间,那是新的题目还没有被锁定并且距离旧的题目已经被锁定的最晚时间,对这些时间点进行操作 #define HAVE_STRUCT_TIMESPEC # ...

  3. 在一个C程序中,main()函数可以放在哪?

    C语言规定,在一个C程序中,main()函数的位置(). A.必须在系统调用的库函数之后 B.必须在程序的开始 C.必须在程序的最后 D.可以在任意位置 答案:D [解析] 每个C程序有且只有一个主函 ...

  4. PHPStorm设置Ctrl+滚轮调整字体大小

    1.点击左上角的File,再点击setting: 2.Editor->General,选择Change font size (Zoom) with Ctrl+Mouse Wheel: 3.点击O ...

  5. 前端之CSS基础篇

    CSS介绍 什么是CSS? CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS ...

  6. linux 网络数据收发网络流量监控

    网卡流量 1.iftop命令 iftop可以用来监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息.TCP/IP连接等官网:http://www.ex-parrot.com/~pdw/if ...

  7. Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之DataStreamer(Packet发送) : 主干

    该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 在上一章(Hadoop3.1.1源码Client详解 : 写入准备-RPC调用与流的建立) 我们提到, ...

  8. laravel框架学习笔记

    一.laravel的安装 1.composer 作用:主要管理php中的依赖关系(类似于yum源) 可以安装的软件: curl    //主要用到微信开发中 upload //文本操作 excel / ...

  9. The Preliminary Contest for ICPC Asia Xuzhou 2019 J Random Access Iterator (树形DP)

    每次循环向下寻找孩子时,随机选取一个孩子,设dp[u]为从u出发,不能得出正确答案的概率,则从u出发,走一次的情况下不能得出正确答案的概率是 P = (dp[v1]+dp[v2]+dp[v3]+--d ...

  10. js遍历传参给html

    <p id="subp" hidden><button id= "upsub"shiro:hasPermission="sys:me ...