Druid数据库连接池

1. Druid是什么?

Druid是Java语言中最好的数据库连接池,由阿里巴巴团队开发。Druid能够提供强大的监控和扩展功能。
        github地址为https://github.com/alibaba/druid,有丰富的中文文档和常见问题的解答,非常方便。

2. 如何在springboot项目中使用?

2.1 首先引入依赖

 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>

2.2 进行属性配置,仅供参考

spring:#数据库连接配置datasource:url: jdbc:postgresql://127.0.0.1:5432/postgresdata-username: postgresdata-password: 123456driver-class-name: org.postgresql.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:#JDBC配置url: jdbc:postgresql://127.0.0.1:5432/postgresusername: postgrespassword: 123456driver-class-name: org.postgresql.Driver#连接池配置initial-size: 10max-active: 50min-idle: 10max-wait: 5000pool-prepared-statements: true #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。max-pool-prepared-statement-per-connection-size: 20validation-query: SELECT 1 FROM DUALvalidation-query-timeout: 20000test-on-borrow: false #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。test-on-return: false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。test-while-idle: true #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒min-evictable-idle-time-millis: 300000  #一个连接在池中最小生存的时间,单位是毫秒# StatViewServlet配置。(因为暴露的监控信息比较敏感,支持密码加密和访问ip限定)stat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: adminfilter:stat:log-slow-sql: trueslow-sql-millis: 1000merge-sql: truewall:config:multi-statement-allow: true

各配置项的含义可以参考github的介绍,非常详细。值得注意的是stat-view-servlet属性配置的就是druid内置的监控页面,我们访问http://ip:port/druid,输入上面配置的用户名密码,即可看到下面的监控页面:

可以查看sql执行时间,修改行数等等。如果只想关注慢sql,可以修改上面配置文件中的 slow-sql-millis,druid默认的是3000ms。

3. 结合spring的监控

上面我们可以看到对sql执行的耗时等,但如果我们也想对方法进行监控可以么?答案肯定是可以的,在上面的监控页面我们可以看到有个叫spring监控,但因为没有配置,暂时为空。要开启监控配置也是非常简单的,如下:

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class DruidAspectConfig {@Beanpublic DruidStatInterceptor druidStatInterceptor() {DruidStatInterceptor dsInterceptor = new DruidStatInterceptor();return dsInterceptor;}@Bean@Scope("prototype")public JdkRegexpMethodPointcut druidStatPointcut() {JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();pointcut.setPatterns("com.qa.cloud.mapper.*","com.qa.cloud.service.*");return pointcut;}@Beanpublic DefaultPointcutAdvisor druidStatAdvisor(DruidStatInterceptor druidStatInterceptor, JdkRegexpMethodPointcut druidStatPointcut) {DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor();defaultPointAdvisor.setPointcut(druidStatPointcut);defaultPointAdvisor.setAdvice(druidStatInterceptor);return defaultPointAdvisor;}
}

我们通过指定Patterns来确定要监控的方法,也可以通过接口类型,bean名称等进行配置。开启后效果如下:

据官方介绍,开启监控对性能的影响是微乎其微的。
       这些监控数据我们也可以调用api通过自定义的形式来输出,也可以输出到日志中(这点很有必要),具体做法都可以参考github上的介绍。
参考博客:
http://www.cnblogs.com/han-1034683568/p/6730869.html

Druid数据库连接池监控的使用相关推荐

  1. 阿里巴巴 Druid 数据库连接池监控界面配置的参数解读

    阿里巴巴 Druid 数据库连接池监控界面配置的参数解读 1.可选的配置项 Property Name Default Value Remarks name 存在多个数据源的时候用于识别数据源 jdb ...

  2. druid数据库连接池监控页面

    一 pom文件 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-b ...

  3. Mysql实现监控数据统计分析:Druid开源分布式系统与阿里巴巴的Druid数据库连接池

    看到Druid很多国内的开发者所熟知的就是阿里巴巴提供的开源数据库连接池工具.如果看了这篇文章还认为Druid仅仅是一个阿里巴巴提供的开源数据库连接池工具那么就错了,它或许指的是用于大数据实时处理的开 ...

  4. log4j mysql 异步_spring boot:配置druid数据库连接池(开启sql防火墙/使用log4j2做异步日志/spring boot 2.3.2)...

    一,druid数据库连接池的功能? 1,Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 2,druid的官方站: http ...

  5. spring boot、mybatis集成druid数据库连接池,实现mysql cluster HA负载均衡访问

    spring boot.mybatis集成druid数据库连接池,实现mysql cluster HA负载均衡访问 1.原理实现介绍 本质来说使用连接池是为了节省创建.关闭数据库连接的资源消耗,从而提 ...

  6. springboot 使用Druid数据库连接池

    Druid 阿里开源的数据库连接池 选择的理由: Druid 经历了阿里双十一的场景,足以可见其性能. Druid 有完整的监控,可以实时监控数据库状态及sql的执行时间. 提供有丰富的监控器,自定义 ...

  7. Druid数据库连接池就这么简单

    前言 本章节主要讲解Druid数据库连接池,为什么要学Druid数据库连接池呢?? 我的知识储备数据库连接池有两种->C3P0,DBCP,可是现在看起来并不够用阿~当时学习C3P0的时候,觉得这 ...

  8. Druid数据库连接池就是这么简单

    前言 本章节主要讲解Druid数据库连接池,为什么要学Druid数据库连接池呢?? 我的知识储备数据库连接池有两种->C3P0,DBCP,可是现在看起来并不够用阿~当时学习C3P0的时候,觉得这 ...

  9. Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10

    问题描述: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10at com.alibab ...

最新文章

  1. Linux开启动过程详解
  2. 函数注意事项和细节讨论
  3. docker 安装nginx 配置目录挂载
  4. python中numpy.ndarray与list的区别?以及用matplotlab.pyplot绘图时的注意事项。
  5. 计算机网络通信的仿真,计算机网络虚拟仿真技术研究与应用.doc
  6. 前端学习(1392):多人管理项目12加密
  7. linux下的idea的界面问题,错位以及各种...
  8. 漫步微积分三十五——弧长
  9. 日志分析系统搭建分析与比较
  10. 字节大牛教你手撕Java学习,Java核心知识点
  11. java21天打卡Day13-正则表达式
  12. centos ip地址固定
  13. JAVA JSP学生助学金管理系统 jsp学生资助管理系统jsp学生管理系统jsp贷款管理系统jsp大学生贷款管理系统
  14. 遇到一个诡异的regedit.exe程序问题
  15. Nordic nrf 蓝牙 ble 透传应用
  16. winxp找不到服务器或 dns 错误,详解网络无法使用DNS错误的修复步骤
  17. JAVA城市道路智能停车管理系统计算机毕业设计Mybatis+系统+数据库+调试部署
  18. 使用CSS3实现圆形进度条
  19. HTML+CSS+JS购物网站制作【学生HTML静态网页作业作品】
  20. js通用获取本周起始日期

热门文章

  1. Matlab中创建一个矩阵的3种常用方法
  2. 多维数组(Multi-dimensional Array)
  3. sync、fsync、fdatasync、fflush函数区别和使用举例
  4. XYQ加密算法——动态可逆加密算法。
  5. Matlab计算波形的总谐波失真--THD(附完整代码)
  6. 序数是什么意思_vlookup 列序数是什么意思
  7. 2017企业网盘年终盘点|机遇与挑战并存,寡头显现
  8. Modelsim仿真操作指导
  9. 掩码、反掩码和通配符
  10. 2021年中国吉他和低音放大器市场趋势报告、技术动态创新及2027年市场预测