常用数据库连接池的配置

1.阿里巴巴-德鲁伊druid连接池配置

1.1、简介:

Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。

1.2、Druid支持哪些数据库?

Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。 

Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。

1.3、基本配置

<!-- 数据库连接池 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
		<!-- 数据库基本信息配置 -->
		 <property name="url" value="${jdbc_url}" />  
    	<property name="username" value="${jdbc_user}" />  
    	<property name="password" value="${jdbc_password}" />  	
		<!-- 初始化连接数量 -->
		<property name="initialSize" value="${druid.initialSize}" />
		<!-- 最大并发连接数 -->
		<property name="maxActive" value="${druid.maxActive}" />
		<!-- 最大空闲连接数 :已经不再使用,配置了也没效果-->
		<!-- <property name="maxIdle" value="${druid.maxIdle}" /> -->
		<!-- 最小空闲连接数 -->
		<property name="minIdle" value="${druid.minIdle}" />
		<!-- 配置获取连接等待超时的时间 -->		
		<property name="maxWait" value="${druid.maxWait}" />
		<!-- 超过时间限制是否回收 -->
		<property name="removeAbandoned" value="${druid.removeAbandoned}" />
		<!-- 超过时间限制多长; -->
		<property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
		<!-- 用来检测连接是否有效的sql,要求是一个查询语句-->	
		<property name="validationQuery" value="${druid.validationQuery}" />
		<!-- 申请连接的时候检测 -->
		<property name="testWhileIdle" value="${druid.testWhileIdle}" />
		<!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
		<property name="testOnBorrow" value="${druid.testOnBorrow}" />
		<!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  -->
		<property name="testOnReturn" value="${druid.testOnReturn}" />
		<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
		<property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" />		
		<property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" />
		<!--属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:  				
				监控统计用的filter:stat
				日志用的filter:log4j
 				防御SQL注入的filter:wall -->
		<property name="filters" value="${druid.filters}" />		
	</bean>
	<!-- 配置sqlsessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:mybatis/sqlMapConfiger.xml"></property>
		<property name="mapperLocations" value="classpath*:/com/sun/blog/sqlMap/**/*Mapper.xml"></property> 
	</bean>
属性配置文件:
driverClassName  = com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://127.0.0.1:3306/blog?Unicode=true&characterEncoding=utf8#
jdbc_user=root
jdbc_password=1127
druid.initialSize = 5
druid.maxActive = 10
druid.minIdle = 3
druid.maxWait = 60000
druid.removeAbandoned = true
druid.removeAbandonedTimeout = 180
druid.timeBetweenEvictionRunsMillis = 60000
druid.minEvictableIdleTimeMillis = 300000
druid.validationQuery = SELECT 1 FROM DUAL
druid.testWhileIdle = true 
druid.testOnBorrow = false
druid.testOnReturn = false
#mysql一般配置为false
druid.poolPreparedStatements = false
druid.maxPoolPreparedStatementPerConnectionSize = 50
druid.filters = stat



2、HikariCP数据库连接池


2.1、简介

HikariCP 是一个高性能的 JDBC 连接池组件。下图是性能的比较测试结果:


2.2、配置

<!-- 数据库连接池 -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
        <property name="poolName" value="SpringHikariCP"/>
        <!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
        <property name="maximumPoolSize" value="${jdbc.maximumPoolSize}"/>
        <!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
        <property name="idleTimeout" value="${jdbc.idleTimeout}"/>
        <!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->
        <property name="maxLifetime" value="${jdbc.maxLifetime}" />
        <property name="connectionTestQuery" value="${jdbc.connectionTestQuery}"/>
 
        <property name="dataSourceClassName" value="${jdbc.dataSourceClassName}"/>
        <property name="dataSourceProperties">
            <props>
                <prop key="url">${jdbc.url}</prop>
                <prop key="user">${jdbc.username}</prop>
                <prop key="password">${jdbc.password}</prop>
            </props>
        </property>
    </bean>
 
    <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
        <constructor-arg ref="hikariConfig"/>
    </bean>
<!-- 配置sqlsessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis/sqlMapConfiger.xml"></property>
<property name="mapperLocations" value="classpath*:/com/sun/blog/sqlMap/**/*Mapper.xml"></property> 
</bean>
属性配置文件:

#数据库连接池的配置
#jdbc.dataSourceClassName=oracle.jdbc.pool.OracleDataSource
#jdbc.url=jdbc:oracle:thin:@10.101.205.3:1521:orcl4
#属性驱动自动识别
jdbc.dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
jdbc.url=jdbc:mysql://127.0.0.1:3306/blog?Unicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=1127

jdbc.maximumPoolSize=10
jdbc.idleTimeout=30000
jdbc.maxLifetime=1800000
jdbc.connectionTestQuery=SELECT 1 from dual











 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值