数据库连接池的目的
为了减少频繁开关连接的时间,提高整个系统的相应能力
通过分析发现应该具备几个属性值:
1、初始大小
2、每次扩容的大小
3、连接池的最大个数
4、空闲连接的死亡时间
各种数据库连接池
1、DBCP(基本不用)
2、C3P0
注意:
一般不会在代码中直接设置数据库相关的属性值
这些属性值会直接写在配置文件中
3、Druid
properties文件配置#驱动名称#driverClassName=com.mysql.jdbc.Driver
#url
url=jdbc:mysql://localhost:3306/demo
#用户名
username=root
#密码
password=123456
#配置初始化大小、最小、最大
initialSize=5
minIdle=10
maxActive
#配置监控系统拦截的filters:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
filters=stat
#配置获取连接等待超时的时间
maxWait=60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis=60000
#配置一个连接在池中最小的生存的时间,单位是毫秒
minEvictableIdleTimeMillis=600000
maxEvictableIdleTimeMillis=900000
#建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
testWhileIdle=true
#申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnBorrow=false
#归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn=false
#是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
poolPreparedStatements=true
#要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
maxOpenPreparedStatements=20
#asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间
asyncInit=true
![](https://img2020.cnblogs.com/blog/1805944/202009/1805944-20200906182407196-1838068307.png)
4、hikariCP
main方法测试类
HikariCP.properties
dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource dataSource.user=root dataSource.password=123456 dataSource.databaseName=demo dataSource.portNumber=3306 dataSource.serverName=localhost