阿里巴巴连接池mysql_阿里巴巴连接池(Druid)
一、com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6以及以上中的
com.mysql.cj.jdbc.Driver 需要指定时区serverTimezone,serverTimezone=UTC代表全球标准时间,使用中国标准时间可设置serverTimezone=Asia/Shanghai。
@Testpublic void testInsert() throwsException{
SimpleDateFormat simpleDateFormat= new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(("----- insert method test ------"));
User user= newUser();
user.setName("留言");
user.setAge(30);
user.setEmail("1515@163.com");
System.out.println(simpleDateFormat.format(newDate()));
user.setTime(simpleDateFormat.parse(simpleDateFormat.format(newDate())));int cout =userMapper.insert(user);
System.out.println(cout);
}
二、配置连接池参
配置
缺省值
说明
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
连接数据库的用户名
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
Destory线程中如果检测到当前连接的最后活跃时间和当前时间的差值大于
minEvictableIdleTimeMillis,则关闭当前连接。
connectionInitSqls
物理连接初始化的时候执行的sql
exceptionSorter
根据dbType自动识别
当数据库抛出一些不可恢复的异常时,抛弃连接
filters
属性类型是字符串,通过别名的方式配置扩展插件,
常用的插件有:
监控统计用的filter:stat
日志用的filter:log4j
防御sql注入的filter:wall
proxyFilters
类型是List,
如果同时配置了filters和proxyFilters,
是组合关系,并非替换关系
removeAbandoned
对于建立时间超过removeAbandonedTimeout的连接强制关闭
removeAbandonedTimeout
指定连接建立多长时间就需要被强制关闭
logAbandoned
指定发生removeabandoned的时候,是否记录当前线程的堆栈信息到日志中
示例
#mysql驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#连接数据库url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
#用户名
spring.datasource.username=root
# 启用ConfigFilter
spring.datasource.druid.filter.config.enabled=true
# 配置 connection-properties,启用加密,配置公钥。
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKvEAHucOqBPMS/2hyS5vvBEI7i/KJNQAncAysoAzjD9zLT05EUYTcSM/ry6JqeVBwI2BwLge/xPRoXO7TNfyB0CAwEAAQ==
#加密并注入publicKey
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
#密码
spring.datasource.password=krh9x0zn/ESXIgZPrMxBpyMef1bZ1t/vbwE9EcqdY0qTSi4iK3vnJfbyiWu7mT2A/uhx1MDnKzE3C1YT0Ry2lg==
#连接池druid阿里巴巴
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#连接池配置
#初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
spring.datasource.druid.initial-size=5
#最小连接池数量
spring.datasource.druid.min-idle=5
#最大连接池数量
spring.datasource.druid.max-active=20
#连接等待超时时间
# 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,
# 并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
spring.datasource.druid.max-wait=60000
#配置隔多久进行一次检测(检测可以关闭的空闲连接)
#有两个含义:
#1: Destroy线程会检测连接的间隔时间
#2: testWhileIdle的判断依据,详细看testWhileIdle属性的说明
spring.datasource.druid.time-between-eviction-runs-millis=60000
#配置连接在池中的最小生存时间
spring.datasource.druid.min-evictable-idle-time-millis=300000
#用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
spring.datasource.druid.validation-query= SELECT 'x'
#设置从连接池获取连接时是否检查连接有效性,true时,如果连接空闲时间超过minEvictableIdleTimeMillis进行检查,否则不检查;false时,不检查
spring.datasource.druid.test-while-idle=true
#申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
spring.datasource.druid.test-on-borrow=false
#归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
spring.datasource.druid.test-on-return=true
# 打开PSCache,并且指定每个连接上PSCache的大小.是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
spring.datasource.druid.pool-prepared-statements=false
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
#监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#spring.datasource.druid.filters=stat,wall,log4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.druid.connect-properties.=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
阿里巴巴连接池mysql_阿里巴巴连接池(Druid)相关推荐
- druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库
一.连接池 在普通的数据库访问程序中,客户程序得到的连接对象是物理连接,调用连接对象的close()方法将关闭连接,而采用连接池技术,客户程序得到的连接对象是连接池中物理连接的一个句柄,调用连接对象的 ...
- druid连接池_SpringBoot整合JDBCTemplate及Druid连接池
SpringBoot整合JDBCTemplate 本篇文章将会介绍用SpringBoot整合JDBCTemplate来实现简单的增删改查的功能.及通过SpringBoot整合Druid数据库连接池实时 ...
- java 的德鲁伊连接池_德鲁伊连接池-Druid
利用Druid连接池获得数据库连接(得到一个连接对象): package com.hk.utils; import com.alibaba.druid.pool.DruidDataSource; im ...
- Druid线程池中的连接什么时候会关闭?
Druid线程池帮我们实现了应用程序和数据之间的长连接管理,一个线上变更引起了我的疑问,如果我们数据库切换到备用集群,怎么变更? 数据库连接,一般都是域名连接,现在将域名和IP的绑定关系变了,更新ng ...
- java 连接池_初探数据库连接池
参考资料 数据库连接池学习笔记(一):原理介绍+常用连接池介绍 java数据库连接池实现原理 高性能数据库连接池的内幕 1. 为什么要使用连接池 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户 ...
- 针对数据库连接池到DRDS连接探活的优化
简介: 针对数据库连接池到DRDS连接探活的优化 1. 问题背景 近期在给某专有云客户进⾏云产品应⽤性能优化分析时,发现了⼀个有趣的关于DRDS使⽤层⾯的问题,这⾥给⼤家分享⼀下. 使⽤过DRDS产品 ...
- mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理
前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...
- oracle mysql连接池配置文件_数据库连接池两种配置方式详解
数据库连接池: 负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接 ...
- 连接池以及常用连接池
连接池 连接池原理: 连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数 据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象.使用完毕后,用 ...
- java 实现 内存池_从连接池到内存池
注:内容微调,修改标题,让题文匹配. 如果将互联网应用比喻成冲浪的话, 可能需要先学会在"池"中游泳. 引子 AI赋能万物,老码农的伙伴们也曾经开发了一个基于图数据库的知识问答系统 ...
最新文章
- (理解和3种方法完全解决pycharm报错)main.py: error: the following arguments are required: -d/--dataset
- 笔记-项目风险管理-转-从木桶效应谈对于安全管理的认识
- 使用PerfView监测.NET程序性能(一):Event Trace for Windows
- python鼠标选中事件_python对绑定事件的鼠标、按键的判断实例
- 瓜田老梁:FA1# 微服务流控防护场景与应对措施
- 12c跨平台完成PDB的备份迁移
- 将JQuery框架集成到SharePoint 2010中
- I2C(smbus pmbus)和SPI分析
- 【交叉编译】配置交叉编译工具链
- 【单片机开发】OV2640在没有DCMI接口的情况下的STM32驱动
- 线性代数06 矩阵的逆以及求法
- FATAL: License file expired:金仓数据库过期了...
- 仅有银行转账凭证,是否可认定为民间借贷关系
- DeepLearning4j-使用Java训练YOLO模型
- 公网视频流访问之webrtc-streamer
- IT工程师为什么女生少?
- 《程序员修炼之道》读书笔记(二)--第三周
- ajax 不能打印出来数据,console打印数据,发现打印结果并非初始ajax返回的值
- java学生-成绩关联实体_java画统计图
- 提升语音识别率的技术 强调与唤醒词相符的输入语音数据
热门文章
- 12个顶级思维模型,非常值得一看!
- 编译ionic应用时遇到“To run dex in process, the Gradle daemon needs a larger heap.”
- 《编码-隐匿在计算机背后的语言》 —— 读书笔记(三):数字
- 基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
- GitHub协同工作
- Git和Gitlab协同工作
- 第三届上海大学生网络安全大赛 流量分析
- Python中过滤列表中全部奇数
- 如何通过python多线程抓取所有东方财富股票信息
- ActiveMQ 反序列化漏洞 (CVE-2015-5254)复现