MySQL连接池配置之c3p0

1、数据库连接信息配置

jdbc.properties内容:

#连接驱动

mysql.jdbc.driver=com.mysql.jdbc.Driver

 

#数据库连接字符串

mysql.jdbc.url=jdbc:mysql://127.0.0.1:3306/test_db?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&connectTimeout=5000&socketTimeout=5000

 

#连接数据库所使用的用户名

mysql.jdbc.username=root

 

#连接密码

mysql.jdbc.password=root

 

#初始连接数,取值应在minPoolSize与maxPoolSize之间。默认值为3
mysql.jdbc.initialPoolSize=10

 

#连接池中保留的最小连接数
mysql.jdbc.minPoolSize=5

 

#连接池中保留的最大连接数,默认为15
mysql.jdbc.maxPoolSize=30

 

#最大空闲时间,该时间内内未使用则连接被丢弃。0表示永不丢弃,默认为0,单位:秒
mysql.jdbc.maxIdleTime=60

 

#当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值为3
mysql.jdbc.acquireIncrement=5

 

#每60秒检查所有连接池中的空闲连接。默认值为0
mysql.jdbc.idleConnectionTestPeriod=60

 

#定义在从数据库获取新连接失败后重复尝试的次数。默认值为30
mysql.jdbc.acquireRetryAttempts=20

 

#获取连接失败将会引起所有正在等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭,默认值:false
mysql.jdbc.breakAfterAcquireFailure=true

 

#JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements,属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。默认值是:0
mysql.jdbc.maxStatements=0

 

#该参数如果设为true那么在每个connection提交的时候都将校验其有效性,如果有需要再使用,该参数打开之后会有很大的性能损耗。建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能。默认值:false
mysql.jdbc.testConnectionOnCheckout=false

 

#设置为true,异步检测连接的有效性

mysql.jdbc.testConnectionOnCheckin=true

 

#每隔多少秒监测连接的有效性

mysql.jdbc.idleConnectionTestPeriod=3600

2、数据库连接池配置

spring.xml中配置的数据源如下,其他配置略。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  <property name="driverClass" value="${mysql.jdbc.driver}"/>
  <property name="jdbcUrl" value="${mysql.jdbc.url}"/>
  <property name="user" value="${mysql.jdbc.username}"/>
  <property name="password" value="${mysql.jdbc.password}"/>
  <property name="initialPoolSize" value="${mysql.jdbc.initialPoolSize}"/>
  <property name="minPoolSize" value="${mysql.jdbc.minPoolSize}"/>
  <property name="maxPoolSize" value="${mysql.jdbc.maxPoolSize}"/>
  <property name="maxIdleTime" value="${mysql.jdbc.maxIdleTime}"/>
  <property name="acquireIncrement" value="${mysql.jdbc.acquireIncrement}"/>
  <property name="idleConnectionTestPeriod" value="${mysql.jdbc.idleConnectionTestPeriod}"/>
  <property name="acquireRetryAttempts" value="${mysql.jdbc.acquireRetryAttempts}"/>
  <property name="breakAfterAcquireFailure" value="${mysql.jdbc.breakAfterAcquireFailure}"/>
  <property name="maxStatements" value="${mysql.jdbc.maxStatements}"></property>
  <property name="testConnectionOnCheckout" value="${mysql.jdbc.testConnectionOnCheckout}"/>
  <property name="testConnectionOnCheckin" value="${mysql.jdbc.testConnectionOnCheckin}"/>
  <property name="idleConnectionTestPeriod" value="${mysql.jdbc.idleConnectionTestPeriod}"/>
</bean>

至此,基于c3p0的数据库连接池配置完毕。

注:文章属原创,如果转发,请务必标注出处:https://www.jinnianshizhunian.vip