1. 程式人生 > >DBCP連線池配置引數說明

DBCP連線池配置引數說明

<!-- 資料來源1 -->
    <bean id="dataSource"
          class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://192.168.0.109:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <!--maxActive: 最大連線數量-->  
        <property name="maxActive" value="150"/>
        <!--minIdle: 最小空閒連線-->  
        <property name="minIdle" value="5"/>
        <!--maxIdle: 最大空閒連線-->  
        <property name="maxIdle" value="20"/>
        <!--initialSize: 初始化連線-->  
        <property name="initialSize" value="30"/>
        <!-- 連線被洩露時是否列印 -->
        <property name="logAbandoned" value="true"/>
        <!--removeAbandoned: 是否自動回收超時連線-->  
        <property name="removeAbandoned"  value="true"/>
        <!--removeAbandonedTimeout: 超時時間(以秒數為單位)-->  
        <property name="removeAbandonedTimeout" value="10"/>
        <!--maxWait: 超時等待時間以毫秒為單位 1000等於60秒-->
        <property name="maxWait" value="1000"/>
        <!-- 在空閒連接回收器執行緒執行期間休眠的時間值,以毫秒為單位. -->
        <property name="timeBetweenEvictionRunsMillis" value="10000"/>
        <!--  在每次空閒連接回收器執行緒(如果有)執行時檢查的連線數量 -->
        <property name="numTestsPerEvictionRun" value="10"/>
        <!-- 1000 * 60 * 30  連線在池中保持空閒而不被空閒連接回收器執行緒-->
        <property name="minEvictableIdleTimeMillis" value="10000"/>
	<property name="validationQuery" value="SELECT NOW() FROM DUAL"/>
    </bean>

下面的註釋為轉來的。很詳細

tomcatde DHCP的配置
<Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
logAbandoned="true" maxActive="20" maxIdle="2" maxWait="5000" name="system"
removeAbandonedTimeout="60" removeAbandoned="true"
password="xx" type="javax.sql.DataSource"
url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=base"
username="sa"/>
當中的
logAbandoned="true"  removeAbandoned="true" removeAbandonedTimeout="60"
就是用來配置資料庫斷開後自動連線的。


資料庫連線池會在啟動時就建立所需的若干連線,並一直保持連線狀態,
但是當資料庫服務停止後,這些連線就被外部因素給中斷了
網上優化了的配置資訊:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
<property name="driverClassName" value="${db.driverClassName}"/> 
<property name="url" value="${db.url}"/> 
<property name="username" value="${db.username}"/> 
<property name="password" value="${db.password}"/> 
<!--initialSize: 初始化連線--> 
<property name="initialSize" value="5"/> 
<!--maxIdle: 最大空閒連線--> 
<property name="maxIdle" value="10"/> 
<!--minIdle: 最小空閒連線--> 
<property name="minIdle" value="5"/> 
<!--maxActive: 最大連線數量--> 
<property name="maxActive" value="15"/> 
<!--removeAbandoned: 是否自動回收超時連線--> 
<property name="removeAbandoned" value="true"/> 
<!--removeAbandonedTimeout: 超時時間(以秒數為單位)--> 
<property name="removeAbandonedTimeout" value="180"/> 
<!--maxWait: 超時等待時間以毫秒為單位 6000毫秒/1000等於60秒--> 
<property name="maxWait" value="3000"/> 
<property name="validationQuery"> 
<value>SELECT 1</value> 
</property> 
<property name="testOnBorrow"> 
<value>true</value> 
</property> 
</bean>  

dbcp配置中文版本,自apache 官方文件
原文請見http://commons.apache.org/dbcp/configuration.html。

引數  描述
username  傳遞給JDBC驅動的用於建立連線的使用者名稱
password  傳遞給JDBC驅動的用於建立連線的密碼
url  傳遞給JDBC驅動的用於建立連線的URL
driverClassName  使用的JDBC驅動的完整有效的java 類名
connectionProperties  當建立新連線時被髮送給JDBC驅動的連線引數,
格式必須是 [propertyName=property;]*
注意 :引數user/password將被明確傳遞,所以不需要包括在這裡。

引數  預設值  描述
defaultAutoCommit  true  連線池建立的連線的預設的auto-commit狀態
defaultReadOnly  driver default  連線池建立的連線的預設的read-only狀態.
如果沒有設定則setReadOnly方法將不會被呼叫. (某些驅動不支援只讀模式,比如:Informix)
defaultTransactionIsolation  driver default  連線池建立的連線的預設的TransactionIsolation狀態.
下面列表當中的某一個: (參考javadoc)

    * NONE
    * READ_COMMITTED
    * READ_UNCOMMITTED
    * REPEATABLE_READ
    * SERIALIZABLE

defaultCatalog   連線池建立的連線的預設的catalog

引數  預設值  描述
initialSize  0  初始化連線:連線池啟動時建立的初始化連線數量,1.2版本後支援
maxActive  8  最大活動連線:連線池在同一時間能夠分配的最大活動連線的數量,
如果設定為非正數則表示不限制
maxIdle  8  最大空閒連線:連線池中容許保持空閒狀態的最大連線數量,超過的空閒連線將被釋放,
如果設定為負數表示不限制
minIdle  0  最小空閒連線:連線池中容許保持空閒狀態的最小連線數量,低於這個數量將建立新的連線,
如果設定為0則不建立
maxWait  無限  最大等待時間:當沒有可用連線時,連線池等待連線被歸還的最大時間(以毫秒計數),
超過時間則丟擲異常,如果設定為-1表示無限等待

引數  預設值  描述
validationQuery   SQL查詢,用來驗證從連線池取出的連線,在將連線返回給呼叫者之前.如果指定,
則查詢必須是一個SQL SELECT並且必須返回至少一行記錄
testOnBorrow  true  指明是否在從池中取出連線前進行檢驗,如果檢驗失敗,
則從池中去除連線並嘗試取出另一個.
注意: 設定為true後如果要生效,validationQuery引數必須設定為非空字串
testOnReturn  false  指明是否在歸還到池中前進行檢驗
注意: 設定為true後如果要生效,validationQuery引數必須設定為非空字串
testWhileIdle  false  指明連線是否被空閒連接回收器(如果有)進行檢驗.如果檢測失敗,
則連線將被從池中去除.
注意: 設定為true後如果要生效,validationQuery引數必須設定為非空字串
timeBetweenEvictionRunsMillis  -1  在空閒連接回收器執行緒執行期間休眠的時間值,以毫秒為單位.
 如果設定為非正數,則不執行空閒連接回收器執行緒
numTestsPerEvictionRun  3  在每次空閒連接回收器執行緒(如果有)執行時檢查的連線數量
minEvictableIdleTimeMillis  1000 * 60 * 30  連線在池中保持空閒而不被空閒連接回收器執行緒
(如果有)回收的最小時間值,單位毫秒

引數  預設值  描述
poolPreparedStatements  false  開啟池的prepared statement 池功能
maxOpenPreparedStatements  不限制  statement池能夠同時分配的開啟的statements的最大數量,
如果設定為0表示不限制


這裡可以開啟PreparedStatements池. 當開啟時, 將為每個連線建立一個statement池,
並且被下面方法建立的PreparedStatements將被快取起來:
    * public PreparedStatement prepareStatement(String sql)
    * public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
注意: 確認連線還有剩餘資源可以留給其他statement
引數  預設值  描述
accessToUnderlyingConnectionAllowed  false  控制PoolGuard是否容許獲取底層連線


如果容許則可以使用下面的方式來獲取底層連線:
    Connection conn = ds.getConnection();
    Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();
    ...
    conn.close();

預設false不開啟, 這是一個有潛在危險的功能, 不適當的編碼會造成傷害.
(關閉底層連線或者在守護連線已經關閉的情況下繼續使用它).請謹慎使用,
並且僅當需要直接訪問驅動的特定功能時使用.
注意: 不要關閉底層連線, 只能關閉前面的那個.
引數  預設值  描述
removeAbandoned  false  標記是否刪除洩露的連線,如果他們超過了removeAbandonedTimout的限制.
如果設定為true, 連線被認為是被洩露並且可以被刪除,如果空閒時間超過removeAbandonedTimeout.
設定為true可以為寫法糟糕的沒有關閉連線的程式修復資料庫連線.
removeAbandonedTimeout  300  洩露的連線可以被刪除的超時值, 單位秒
logAbandoned  false  標記當Statement或連線被洩露時是否列印程式的stack traces日誌。
被洩露的Statements和連線的日誌新增在每個連線開啟或者生成新的Statement,
因為需要生成stack trace。


如果開啟"removeAbandoned",那麼連線在被認為洩露時可能被池回收. 這個機制在(getNumIdle() < 2)
 and (getNumActive() > getMaxActive() - 3)時被觸發.
舉例當maxActive=20, 活動連線為18,空閒連線為1時可以觸發"removeAbandoned".
但是活動連線只有在沒有被使用的時間超過"removeAbandonedTimeout"時才被刪除,預設300秒.
在resultset中游歷不被計算為被使用.

相關推薦

DBCP連線配置引數詳解

initialSize="10"           初始化連線,連線池啟動時建立的初始化連線數量(預設值為0) maxActive="80"       

DBCP連線配置引數說明 c3p0使用說明

一,DBCP連線池配置 <!-- 資料來源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" d

DBCP連線配置引數說明

<!-- 資料來源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="clo

DBCP連線配置詳解,引數列表

Spring DBCP配置 <bean id=“dataSource” class=“org.apache.commons.dbcp.BasicDataSource” destroy-method=“close”> <property name=“driverClassName” v

DBCP連線配置

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdb

hibernate框架之DBCP連線配置

hibernate配置資料庫連線池的三種方法https://blog.csdn.net/super712/article/details/52823192  以下是hibernate配置檔案裡面配置dbcp的demo; <?xml version="1.0" encodi

DBCP連線配置詳解

Spring DBCP配置 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-meth

hibernate dbcp連線配置

<!--標準的XML檔案的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML檔案的編碼方式-->                  <?xml version='1.0' encoding='gb2312'?>  <!--表明解析

DBCP連線引數詳解-2.4.0版本

BasicDataSource 配置引數 這些配置均在dbcp原始碼的BasicDataSource類的createPoolableConnectionFactory方法中使用和初始化。具體程式碼如下: protected PoolableConnectionFactory createPo

DBCP,C3P0,druid連線配置使用

                                   Apache DBCP連線池配置 Apache commons-dbcp 需要匯入dbcp包和 pool包 ,可以 從spring-framework-3.0.2.RELEASE-dependencie

Spring學習-24:Spring中的JDBC Template(JDBC模板):預設連線DBCP連線、C3P0配置

上一講中,我們編寫的測試類如下所示: package com.js.demo1; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springfram

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

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

spring整合mybatis,dbcp連線配置檔案

<?xml version="1.0" encoding="UTF-8"?>     xsi:schemaLocation="     <context:annotation-config />     <contex

apache.dbcp連線配置

這裡只有本人開啟編輯後才可以檢視 我本人常用阿里巴巴的druid連線池 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="in

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

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

dbcp連線八小時失效配置(testQuery/validationQuery)

公司的專案最近上線,專案使用了spingboot,老大們總是提微服務這個概念,於是學習了一番,我自己啟動了一個專案作為後臺服務組成部分編碼完成以後將專案部署到了伺服器上,每次在測試的時候測沒有出現問

資料庫超時空閒失效-dbcp連線引數優化

預設引數的情況下連線池是不會自動去檢測某個連線是否失效的。這樣程式如果獲到的是已經失效的連結,將會出現報錯。解決原理: DBCP使用Apache的ObjectPool作為Connection Pool的實現,在構造GenericObjectPool的時候,會生成一個Inner Class Evictor,實現

spring配置dbcp連線

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  <property name="username" value="${connection.username}"></property&

weblogic伺服器連線配置細節

進入某個連線池配置頁,進入“連線“頁,點選高階選項的”show“顯示高階選項。 指定 "測試頻率" 並啟用 "測試保留的連線"、"測試建立的連線" 和 "測試釋放的連線"。   測試頻率(Test Frequency):  

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

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