查看“Druid数据库连接池的使用实现”的源代码
←
Druid数据库连接池的使用实现
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
https://www.bilibili.com/video/BV1eJ411c7rf?p=50 Druid 是阿里巴巴开源平台上一个数据库连接池实现,它结合了 C3P0、DBCP、Proxool 等数据库连接池的优点,同时加入了日志监控,可以很好地监控数据库连接池连接和 SQL 的执行情况,可以说是针对监控而生的 DB 连接池,'''<big>可以说是目前最好的连接池之一</big>'''。 https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 === 详细配置参数 === https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8 {| class="wikitable" !配置 !缺省值 !说明 |- |name | |配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this). 另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。详情-点此处。 |- |url | |连接数据库的url,不同数据库不一样。例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto |- |username | |连接数据库的用户名 |- |password | |连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里 |- |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。在mysql下建议关闭。 |- |maxPoolPreparedStatementPerConnectionSize | -1 |要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100 |- |validationQuery | |用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。 |- |validationQueryTimeout | |单位:秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法 |- |testOnBorrow |true |申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 |- |testOnReturn |false |归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 |- |testWhileIdle |false |建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 |- |keepAlive |false (1.0.28) |连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。 |- |timeBetweenEvictionRunsMillis |1分钟(1.0.14) |有两个含义: 1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明 |- |numTestsPerEvictionRun |30分钟(1.0.14) |不再使用,一个DruidDataSource只支持一个EvictionRun |- |minEvictableIdleTimeMillis | |连接保持空闲而不被驱逐的最小时间 |- |connectionInitSqls | |物理连接初始化的时候执行的sql |- |exceptionSorter |根据dbType自动识别 |当数据库抛出一些不可恢复的异常时,抛弃连接 |- |filters | |属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall |- |proxyFilters | |类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系 |}
返回至
Druid数据库连接池的使用实现
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息