您的位置:首页 > 编程语言 > Java开发

java 配数据源连接池详解

2015-03-04 17:58 337 查看
老同事离职,接手同事的项目,发现项目运行一段时间特别慢。自己在做性能优化的时候,发现许多JDBC链接,都没有关闭。对此,自己特地的对连接处做了研究,分享给大家,希望和大家共同学习。自己刚开始写博客,谢谢大家的支持。













[code]<!-- Basic Pool Configuration(基本配置项) -->
<!--连接池在无空闲连接可用时一次性创建的新数据库连接数,Default:3  目前配置为5个-->
<property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>
<!--连接池初始化时创建的连接数,Default:3  目前配置为10个-->
<property name="initialPoolSize" value="${jdbc.initialPoolSize}" />
<!--连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,Default:15 目前配置为100个-->
<property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
<!--连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。如果为0,则永远不会断开连接,Default:0(单位s) 目前配置为360s-->
<property name="maxIdleTime" value="${jdbc.maxIdleTime}" />
<!--连接池保持的最小连接数,后面的maxIdleTimeExcessConnections跟这个配合使用来减轻连接池的负载,Default:3 目前配置为5个-->
<property name="minPoolSize" value="${jdbc.minPoolSize}" />

<!-- Managing Pool Size and Connection Age(管理连接池的大小和连接的生存时间 )-->
<!--为了减轻连接池的负载,比如连接池中连接数因为某次数据访问高峰导致创建了很多数据连接但是后面的时间段需要的数据库连接数很少,则此时连接池完全没有必要维护那么多的连接,
所以有必要将断开丢弃掉一些连接来减轻负载,必须小于maxIdleTime。配置不为0,则会将连接池中的连接数量保持到minPoolSize;为0则不处理 Default:0(单位 s)-->


[code]<!-- Configuring Statement Pooling(配置Statement缓存 )-->
<!-- 连接池为数据源缓存的PreparedStatement的总数。由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算。
maxStatements和maxStatementsPerConnection均为零,语句缓存将不会启用; maxStatements如果是零,但maxStatementsPerConnection是一个非零值,语句缓存将被启用 Default : 0-->  
<property name="maxStatements" value="0" />  
<!-- 连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,
            如果设置的好,肯定是可以提高性能的。为0的时候不缓存 Default : 0-->  
<property name="maxStatementsPerConnection" value="100" />  

<!-- Configuring Recovery From Database Outages(重连相关配置 ) -->
<!--连接池在获得新连接失败时重试的次数,如果小于等于0则无限重试直至连接获得成功。Default: 30 -->
<property name="acquireRetryAttempts" value="30"/>
<!--连接池在获得新连接时的间隔时间 Default: 1000(单位ms) -->
<property name="acquireRetryDelay" value="600"/>
<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->
<property name="breakAfterAcquireFailure" value="false" />

<!-- Configuring Unresolved Transaction Handling(配置未提交的事务处理 ) -->
<!--连接池在回收数据库连接时是否自动提交事务,如果为false,则会回滚未提交的事务;如果为true,则会自动提交事务。Default: false-->
<property name="autoCommitOnClose" value="false" />

<!-- Other DataSource Configuration(其他配置项) -->
<!--配置当连接池所有连接用完时应用程序getConnection的等待时间。为0则无限等待直至有其他连接释放或者创建新的连接,
不为0则当时间到的时候如果仍没有获得连接,则会抛出SQLException。Default: 0(单位ms) 目前配置为6000-->
<property name="checkoutTimeout" value="${jdbc.checkoutTimeout}"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: