数据库连接池的配置

  created  by  鱼鱼 {{tag}}
创建于 2018年09月28日 10:30:24 最后修改于 2018年12月02日 21:40:01

    在并发项目中,使用数据库连接池

    数据源,一般指javax.sql.DataSource,他可以有各种的各种不同实现,包含连接池和连接池管理,有时也直接叫他数据库连接池。

数据库连接池简介

    数据库连接池在项目启动初始化时,直接创建对应的数据库连接,并将其作为对象存储在内存中。当用户访问时,不必创建新的数据库连接,而是直接使用空闲的数据库连接对象,使用完毕再将其释放,但不会断开连接。

    连接池使用的优点:

    • 资源复用

    • 性能更优

    • 更好的资源分配管理

    • 统一配置,防止废连接


    常用数据库连接池:

    • Spring框架自带的DriverManagerDataSource

    • 阿里巴巴数据源Druid

    • c3p0连接池



DriverManagerDataSource

    xml配置: ApplicationContext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<!-- Connection Info -->
		<property name="driverClassName" value="$${jdbc.driver}" />
		<property name="url" value="$${jdbc.url}" />
		<property name="username" value="$${jdbc.username}" />
		<property name="password" value="$${jdbc.password}" />

		<!-- Connection Pooling DBCP -->
		<property name="initialSize" value="5" />
		<property name="maxActive" value="$${jdbc.pool.maxActive}" />
		<!-- 最大连接数 0为无限制 -->
		<property name="maxWait" value="60000" />
		<!-- 最大连接等待时间 -1为无限制 -->
		<property name="minIdle" value="1" />
		<property name="maxIdle" value="$${jdbc.pool.maxIdle}" />
		<!-- 最大空闲连接数 0为无限制 -->
		<property name="timeBetweenEvictionRunsMillis" value="30000" />
    	<property name="minEvictableIdleTimeMillis" value="300000" />
    
		<property name="poolPreparedStatements" value="true" />
		
		<property name="removeAbandoned" value="true" />
		<!-- 回收超过5分钟的连接(秒) -->
		<property name="removeAbandonedTimeout" value="300" />
		<!-- 防止 mysql 超时 -->
		<property name="validationQuery" value="SELECT 1" />
	    <property name="testWhileIdle" value="true" />
	    <property name="testOnBorrow" value="false" />
	    <property name="testOnReturn" value="false" />
	    
	    <property name="logAbandoned" value="true" />
</bean>

    .properties略


c3p0连接池

    配置文件c3p0-config.xml

<c3p0-config>
    <default-config>
        <property name="automaticTestTable">con_test</property>
        <property name="checkoutTimeout">30000</property>
        <property name="idleConnectionTestPeriod">30</property>
        <property name="initialPoolSize">10</property>
        <!-- 超过多长时间连接自动销毁,默认为0,即永远不会自动销毁 -->
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
        <property name="maxStatements">200</property>
        <user-overrides user="test-user">
            <property name="maxPoolSize">10</property>
            <property name="minPoolSize">1</property>
            <property name="maxStatements">0</property>
        </user-overrides>
    </default-config>
            <!-- This app is massive! -->
    <named-config name="intergalactoApp"> 
        <!-- 声明当连接池中连接耗尽时再一次新生成多少个连接,默认为3个 -->
        <property name="acquireIncrement">50</property>
        <!--当连接池启动时,初始化连接的个数,必须在minPoolSize~maxPoolSize之间,默认为3 -->
        <property name="initialPoolSize">100</property>
        <!-- 任何时间连接池中保存的最小连接数,默认3 -->
        <property name="minPoolSize">50</property>
        <!-- 在任何时间连接池中所能拥有的最大连接数,默认15 -->
        <property name="maxPoolSize">1000</property>
        <!-- intergalactoApp adopts a different approach to configuring statement caching -->
        <property name="maxStatements">0</property> 
        <property name="maxStatementsPerConnection">5</property>

        <user-overrides user="master-of-the-universe"> 
            <property name="acquireIncrement">1</property>
            <property name="initialPoolSize">1</property>
            <property name="minPoolSize">1</property>
            <property name="maxPoolSize">5</property>
            <property name="maxStatementsPerConnection">50</property>
        </user-overrides>
    </named-config>
</c3p0-config>

相关参数的选择

    配置连接池时,应合理配置相关参数。

maxActive:最大活动连接,一般等于应用并发量。

    


评论区
评论
{{comment.creator}}
{{comment.createTime}} {{comment.index}}楼
评论

数据库连接池的配置

数据库连接池的配置

    在并发项目中,使用数据库连接池

    数据源,一般指javax.sql.DataSource,他可以有各种的各种不同实现,包含连接池和连接池管理,有时也直接叫他数据库连接池。

数据库连接池简介

    数据库连接池在项目启动初始化时,直接创建对应的数据库连接,并将其作为对象存储在内存中。当用户访问时,不必创建新的数据库连接,而是直接使用空闲的数据库连接对象,使用完毕再将其释放,但不会断开连接。

    连接池使用的优点:


    常用数据库连接池:


DriverManagerDataSource

    xml配置: ApplicationContext.xml

<bean id="tmpdataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<!-- Connection Info -->
		<property name="driverClassName" value="$${jdbc.driver}" />
		<property name="url" value="$${jdbc.url}" />
		<property name="username" value="$${jdbc.username}" />
		<property name="password" value="$${jdbc.password}" />

		<!-- Connection Pooling DBCP -->
		<property name="initialSize" value="5" />
		<property name="maxActive" value="$${jdbc.pool.maxActive}" />
		<!-- 最大连接数 0为无限制 -->
		<property name="maxWait" value="60000" />
		<!-- 最大连接等待时间 -1为无限制 -->
		<property name="minIdle" value="1" />
		<property name="maxIdle" value="$${jdbc.pool.maxIdle}" />
		<!-- 最大空闲连接数 0为无限制 -->
		<property name="timeBetweenEvictionRunsMillis" value="30000" />
    	<property name="minEvictableIdleTimeMillis" value="300000" />
    
		<property name="poolPreparedStatements" value="true" />
		
		<property name="removeAbandoned" value="true" />
		<!-- 回收超过5分钟的连接(秒) -->
		<property name="removeAbandonedTimeout" value="300" />
		<!-- 防止 mysql 超时 -->
		<property name="validationQuery" value="SELECT 1" />
	    <property name="testWhileIdle" value="true" />
	    <property name="testOnBorrow" value="false" />
	    <property name="testOnReturn" value="false" />
	    
	    <property name="logAbandoned" value="true" />
</bean>

    .properties略


c3p0连接池

    配置文件c3p0-config.xml

<c3p0-config>
    <default-config>
        <property name="automaticTestTable">con_test</property>
        <property name="checkoutTimeout">30000</property>
        <property name="idleConnectionTestPeriod">30</property>
        <property name="initialPoolSize">10</property>
        <!-- 超过多长时间连接自动销毁,默认为0,即永远不会自动销毁 -->
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
        <property name="maxStatements">200</property>
        <user-overrides user="test-user">
            <property name="maxPoolSize">10</property>
            <property name="minPoolSize">1</property>
            <property name="maxStatements">0</property>
        </user-overrides>
    </default-config>
            <!-- This app is massive! -->
    <named-config name="intergalactoApp"> 
        <!-- 声明当连接池中连接耗尽时再一次新生成多少个连接,默认为3个 -->
        <property name="acquireIncrement">50</property>
        <!--当连接池启动时,初始化连接的个数,必须在minPoolSize~maxPoolSize之间,默认为3 -->
        <property name="initialPoolSize">100</property>
        <!-- 任何时间连接池中保存的最小连接数,默认3 -->
        <property name="minPoolSize">50</property>
        <!-- 在任何时间连接池中所能拥有的最大连接数,默认15 -->
        <property name="maxPoolSize">1000</property>
        <!-- intergalactoApp adopts a different approach to configuring statement caching -->
        <property name="maxStatements">0</property> 
        <property name="maxStatementsPerConnection">5</property>

        <user-overrides user="master-of-the-universe"> 
            <property name="acquireIncrement">1</property>
            <property name="initialPoolSize">1</property>
            <property name="minPoolSize">1</property>
            <property name="maxPoolSize">5</property>
            <property name="maxStatementsPerConnection">50</property>
        </user-overrides>
    </named-config>
</c3p0-config>

相关参数的选择

    配置连接池时,应合理配置相关参数。

maxActive:最大活动连接,一般等于应用并发量。

    



数据库连接池的配置2018-12-02鱼鱼

{{commentTitle}}

评论   ctrl+Enter 发送评论