1. 程式人生 > >常用資料庫連線池的配置

常用資料庫連線池的配置

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







相關推薦

常用資料庫連線配置

1.阿里巴巴-德魯伊druid連線池配置 1.1、簡介: Druid是阿里巴巴開源平臺上的一個專案,整個專案由資料庫連線池、外掛框架和SQL解析器組成。該專案主要是為了擴充套件JDBC的一些限制,可以

使用資料庫連線配置資料來源

Tomcat伺服器的context.xml檔案中Context元素下增加Resource元素 oracle <Resource name="jdbc/hrs" auth="Container" type="javax.sql.DataSource" maxActive="100" ma

阿里Druid資料庫連線配置解釋

#阿里資料庫連線池Druid配置 # 初始化連線大小 spring.datasource.druid.initial-size=20 # 最小空閒連線數 spring.datasource.druid.minIdle=20 # 最大連線數 spring.datasource.druid.maxAct

常用資料庫連線(dbpc,c3p0,Druid)

1. 引言 1.1 定義 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。 資料庫連線池負責分配、管理和釋放資料庫連線,它允許應

c3p0 資料庫連線配置 詳細總結

前言 關於 c3p0 一般有這麼兩種配置,一種是通過 set 方法進行配置,另一種是通過在同 src 目錄下的 c3p0-conflg.xml 檔案或者 c3p0.properties 檔案進行相關的配置。 一、c3p0 通過 set 方法進行配置 原始碼: priva

資料庫連線失效導致程式異常怎麼辦—-mybatis資料庫連線配置資料庫連線失效導致程式異常怎麼辦—-mybatis資料庫連線配置

以mysql為例,資料庫連線預設是8小時,也就是說一個連線8小時未使用,就將被關閉,但是如果你使用了資料庫連線池技術,當連線被關閉之後,程式並不知道這是一個失效的連線,依然進行使用,就會導致程式出錯。怎麼辦呢? 1.修改mysql的預設時間,可以最大改為一年。(但是

阿里DRUID資料庫連線配置

DRUID介紹     Druid是阿里實現的一個開源資料庫連線池,在功能、效能、擴充套件性方面,都超過其他資料庫連線池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。同時Druid還提供了封裝的sql監控,u

JDBC資料庫連線配置

dbcp配置中文版本,翻譯自apache 官方文件,原文請見http://commons.apache.org/dbcp/configuration.html。 引數 描述 username 傳遞給JDBC驅動的用於建立連線的使用者名稱 password 傳遞給JDBC驅動的用於建立連線的密碼 url

資料庫連線配置除錯

前些日子,私活中遇到的問題,是mysql資料庫       用sqlyog圖形化工具連線資料庫和啟動tomcat伺服器都報的是沒有足夠記憶體資料庫不能建立新連線異常。       按照網上的說法,是連線數配

java資料庫連線配置的幾種方法

一,Tomcat配置資料來源: 方式一:在WebRoot下面建資料夾META-INF,裡面建一個檔案context.xml,內容如下:  <Context>       <Resource name="jdbc/test" auth="Container" type="javax.sq

tomcat-dbcp資料庫連線配置以及使用時候的一些坑

一、資料庫連線池 開發的時候經常會需要對資料庫進行一些操作,比如說常見的增刪改查之類的,當資料量小的時候,可以直接進行操作,但是當資料量增多的時候,每一次連線以及釋放資料庫都會耗費一定的時間,這個時候,可以採用資料庫連線池來保持資料庫的連結,減少連線資料庫對程式帶來的開銷,

jfinal druid資料庫連線配置

在jfinal配置類的configPlugin(Plugins me)中配置外掛 /** * 配置外掛<br> * 1,druid資料庫連線池<br> * 2,配置ActiveRecord外掛<br>

JavaEE —— 資料庫連線配置檔案

driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/db_forum username=root password

Spring+Hibernate+Proxool兩個資料庫連線配置

1,配置兩個proxool.xml檔案,proxool.first.xml配置 <proxool> <alias>Proxool.First</alias> <proxool> <ali

javalite 使用druid資料庫連線配置

在pom檔案中引入jar包 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId>

資料庫連線-常用引數配置及含義

1. maxActive  連線池支援的最大連線數,這裡取值為20,表示同時最多有20個數據庫連線。一般把maxActive設定成可能的併發量就行了設 0 為沒有限制。 2. maxIdle 連線池中最多可空閒maxIdle個連線 ,這裡取值為20,表示即使沒有資料庫連線時

springBoot資料庫連線常用配置

在配置檔案中新增配置如下(我使用的是多資料來源): spring.datasource.primary.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=utf

springboot配置預設資料庫連線並解決初始連線未生效問題

目前Spring Boot中預設支援的連線池有dbcp,dbcp2, tomcat, hikari三種連線池。  在springboot1.5之前預設tomcat連線池, 版本org.springframework.boot.autoconfigure.jdbc.Data

JFinal配置資料庫連線外掛和表類對映

配置資料庫連線池外掛,此處以Druid為例,還需要配置資料庫訪問外掛,即ActiveRecord外掛,用於建立資料庫中Table和Java Bean的mapping對映: public void configPlugin(Plugins me) { // 配置 druid

druid 資料庫連線的詳細配置

首先說一下自己程式中遇到的問題,前一段時間新寫了一個專案,主要架構改進,為前端提供介面(spring +springmvc+mybatis) 在新專案中使用的是阿里的druid連線池,配置簡單,除了資料庫地址,驅動類,使用者名稱和密碼其他一起都是預設,開始的時候由於專案更新上線頻率比較多,沒有出現太