常用數據庫連接池的配置


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.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











 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com