常用数据库连接池的配置

来源:互联网 发布:apache activemq 编辑:程序博客网 时间:2024/06/06 13:11

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.Driverjdbc_url=jdbc:mysql://127.0.0.1:3306/blog?Unicode=true&characterEncoding=utf8#jdbc_user=rootjdbc_password=1127druid.initialSize = 5druid.maxActive = 10druid.minIdle = 3druid.maxWait = 60000druid.removeAbandoned = truedruid.removeAbandonedTimeout = 180druid.timeBetweenEvictionRunsMillis = 60000druid.minEvictableIdleTimeMillis = 300000druid.validationQuery = SELECT 1 FROM DUALdruid.testWhileIdle = true druid.testOnBorrow = falsedruid.testOnReturn = false#mysql一般配置为falsedruid.poolPreparedStatements = falsedruid.maxPoolPreparedStatementPerConnectionSize = 50druid.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.MysqlDataSourcejdbc.url=jdbc:mysql://127.0.0.1:3306/blog?Unicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=1127jdbc.maximumPoolSize=10jdbc.idleTimeout=30000jdbc.maxLifetime=1800000jdbc.connectionTestQuery=SELECT 1 from dual











 

0 0