资源复用是系统性能优化中的一种常用手段,如单例,数据库连接池,线程池等都是资源复用的常用技巧。 数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法
和dbcp类似,druid的配置项如下

欢迎大家使用Druid,常见问题在这里解答,希望对大家有所帮助。https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

DruidDataSource配置

// properties settingMap<String, String> conf = new HashedMap();conf.put(DruidDataSourceFactory.PROP_DRIVERCLASSNAME, "com.mysql.jdbc.Driver");conf.put(DruidDataSourceFactory.PROP_URL, url);conf.put(DruidDataSourceFactory.PROP_USERNAME, source.getUserName());if (StringUtils.isNotBlank(source.getUserPwd())) {conf.put(DruidDataSourceFactory.PROP_PASSWORD, source.getUserPwd());}// 配置初始化大小、最小、最大conf.put(DruidDataSourceFactory.PROP_INITIALSIZE, source.getInitialSize() + "");conf.put(DruidDataSourceFactory.PROP_MINIDLE, source.getMinIdle()+ "");conf.put(DruidDataSourceFactory.PROP_MAXACTIVE, source.getMaxActive()+ "");DruidDataSource druidDS = (DruidDataSource) DruidDataSourceFactory.createDataSource(conf);druidDS.setBreakAfterAcquireFailure(true);/** 是否缓存preparedStatement,也就是PSCache。  PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。作者在5.5版本中使用PSCache,通过监控界面发现PSCache有缓存命中率记录,该应该是支持PSCache*/druidDS.setPoolPreparedStatements(true);/**setTimeBetweenEvictionRunsMillis:有两个含义:1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明setTestWhileIdle:建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。*/druidDS.setTestWhileIdle(true);druidDS.setTimeBetweenEvictionRunsMillis(60000);druidDS.setConnectionErrorRetryAttempts(APIConstant.DATA_API_JDBC_CONNECTION_RETRY_COUNT);// 连接泄漏监测druidDS.setRemoveAbandoned(true);// 是否在自动回收超时连接的时候打印连接的超时错误druidDS.setLogAbandoned(true);// 30s=>0.5m ,1800s =>30m, 3600s =>1h,设置8小时有效druidDS.setRemoveAbandonedTimeout(3600 * 8 * 24);// 配置获取连接等待超时的时间druidDS.setMaxWait(2000);// 单位秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法druidDS.setValidationQueryTimeout(source.getValidationQueryTimeout());// 防止过期druidDS.setValidationQuery("SELECT 'x'");druidDS.setTestWhileIdle(true);druidDS.setTestOnBorrow(true);// 初始化druidDS.init();

filters:属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计
用的filter:stat日志用的filter:log4j,防御sql注入的filter:wall
initialSize:初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一
次getConnection时
maxActive:最大连接池数量
minIdle:最小连接池数量
maxWait:获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁
poolPreparedStatements: 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
validationQuery:用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用
validationQueryTimeout:单位秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法
testOnBorrow: 申请连接时执行validationQuery检测连接是否有效,做了这个配置会 降低性能。
testOnReturn:归还连接时执行validationQuery检测连接是否有效,做了这个配置会降 低性能。
testWhileIdle:建议配置为true,不影响性能,并且保证安全性。指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除. 。
numTestsPerEvictionRun:不再使用,一个DruidDataSource只支持一个EvictionRun
minEvictableIdleTimeMillis:连接保持空闲而不被驱逐的最长时间
connectionInitSqls:物理连接初始化的时候执行的sql
exceptionSorter:当数据库抛出一些不可恢复的异常时,抛弃连接
removeAbandoned:是否启用连接泄露检测
removeAbandonedTimeout:连接泄露,连接超过指定时间未关闭,就会被强行回收
logAbandoned:关闭abanded连接时输出错误日志

链接:https://www.jianshu.com/p/6e8e1ae6f02b

DruidDataSource详解部分(一)相关推荐

  1. spring框架使用Quartz执行定时任务实例详解

    版权声明:本文为博主原创文章,如需转载,请标明出处. https://blog.csdn.net/alan_liuyue/article/details/80382324 Quartz简介 1.Qua ...

  2. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  3. Druid 连接池的实用 配置详解

    Druid连接池参数配置详解 druid为阿里巴巴的数据源,(数据库连接池),集合了c3p0.dbcp.proxool等连接池的优点,还加入了日志监控,有效的监控DB池连接和SQL的执行情况. DRU ...

  4. Spring高级之注解@Bean详解(超详细)

    定义/作用 当我们要使用第三方类实现组件注册到IOC容器时,例如第三方数据库连接池等,我们无法修改他们的代码,所以我们不能通过@Component及其衍生注解来进行组件定义.这是,可以通过@Bean注 ...

  5. BOOT客户管理系统(详解)

    BOOT客户管理系统(详解) Github:https://github.com/wz20 Gitee:https://gitee.com/Wang-ZeLXM/boot-crm 本文中的代码不可以直 ...

  6. Java操作数据库方式(六)DataSource详解

    ##概述 在java世界里操作数据库有很多方式,在众多方式中除了JDBC外都有DataSource对象. DataSource可以看作数据源,它封装了数据库参数,连接数据库,程序中操作DataSour ...

  7. JAVA+JDBC超级详解---从连接数据库到连接池

    一.Connection:连接数据库 1.1Driver实现类对象 Driver 接口 Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口.这个接口是提供给数据库厂商使用的, ...

  8. 88-Spring Boot详解

    Spring Boot详解 SpringBoot基本应用: 约定优于配置: 上面是引自官网的一段话,大概是说: Spring Boot 是所有基于 Spring 开发的项目的起点 Spring Boo ...

  9. DRUID 连接池的使用、配置详解

    DRUID 连接池的使用.配置详解 本篇参考:原文链接 一.DRUID 介绍: DRUID 是阿里巴巴开源平台上一个数据库连接池实现,它结合了 C3P0.DBCP.PROXOOL等DB池的优点,同时加 ...

  10. Springboot多数据源配置详解

    Springboot多数据源配置详解 概念 配置 多数据源使用 概念 一般来说,我们正常的业务只涉及一个数据源,在特定的业务场景中需要使用多个数据源的情况,就需要配置多个数据源来满足特定的业务需求.本 ...

最新文章

  1. MIT开发的一款最新Chrome插件,功能远超OCR软件,可快速识别和复制图中文字
  2. python编程小游戏-python编程游戏有哪些
  3. 自制单选多选日历文本框文本域控件
  4. linux实战应用案例: 777 权限表示什么,各数字又是什么含义?
  5. 查看当前提供了哪些引擎
  6. Android扩展类方法,Android 扩展 uni小程序SDK 原生能力
  7. 如何提取sql语句中绑定变量的值?
  8. java变量的声明和数据类型
  9. html快闪软件制作,阿勇pr:如何使用pr快闪模板快速制作出快闪视频
  10. Android代码修改系统时间
  11. 在线搜索全网音乐支持歌曲外链下载等源码[免费开源]
  12. Mac Yapi 内网安装保姆级步骤
  13. matlab冲激函数delta,信号与系统matlab实验指导书解决方案.doc
  14. 2021-11-09小程序的开发制作的价格是多少?
  15. 342_Linux Mint使用国内的软件源
  16. python编写怎么换行_python怎么换行继续写脚本
  17. 华为手机开发人员选项哪里去了
  18. 【转】DDR3中的ODT
  19. SpringBoot Mybatis注解调用Mysql存储过程并接收多个OUT结果集(多个mode=IN和mode=OUT参数)
  20. 7类AI淘金者:各显神通,但钱到底被谁赚了?

热门文章

  1. P3966 [TJOI2013]单词(AC自动机)
  2. ipa在线下载安装(itms-services)
  3. thinkpadt410接口介绍_【ThinkPadT410s(2912BR7)评测】丰富接口满足日常所需-中关村在线...
  4. lg-1 x 怎么算_纯爱|电竞新文《队友太会撒娇了怎么办》《转会后我成了团宠》...
  5. IDEA TOP TIPS
  6. 分类模型效果评估指标
  7. An invalid domain [.xx.com] was specified for this cookie 异常记录
  8. 解决局域网文件传输慢的问题
  9. Matlab中clc;clear;clear all;clf;close;close all作用
  10. 科学计算机算方差与期望,期望、方差、协方差及相关系数的基本运算