• 连接池(c3p0+druid)配置


    一、C3P0

    #最常用配置
    #initialPoolSize:连接池初始化时创建的连接数,default : 3,取值应在minPoolSize与maxPoolSize之间

    c3p0.initialPoolSize=10

    #minPoolSize:连接池保持的最小连接数,default : 3

    c3p0.minPoolSize=10

    #maxPoolSize:连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15

    c3p0.maxPoolSize=50

    #acquireIncrement:连接池在无空闲连接可用时一次性创建的新数据库连接数,default : 3
    c3p0.acquireIncrement=5


    #管理连接池的大小和连接的生存时间
    #maxIdleTime:连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。如果为0,则永远不会断开连接,即回收此连接。default : 0 单位 s

    c3p0.maxIdleTime=600

    #idleConnectionTestPeriod:每900秒检查所有连接池中的空闲连接
    c3p0.idleConnectionTestPeriod=900


    #配置PreparedStatement缓存
    #连接池为数据源缓存的PreparedStatement的总数。由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement
    #来计算。同时maxStatementsPerConnection的配置无效。default : 0(不建议使用)

    c3p0.maxStatements=500

    #连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,
    #如果设置的好,肯定是可以提高性能的。为0的时候不缓存。default : 0(看情况而论)
    c3p0.maxStatementsPerConnection=30


    #重连相关配置 
    #acquireRetryAttempts:连接池在获得新连接失败时重试的次数,如果小于等于0则无限重试直至连接获得成功。default : 30(建议使用)

    c3p0.acquireRetryAttempts=5

    #acquireRetryDelay:两次连接中间隔时间,单位毫秒,连接池在获得新连接时的间隔时间。default : 1000 单位ms(建议使用)

    c3p0.acquireRetryDelay=1000

    #breakAfterAcquireFailure:如果为true,则当连接获取失败时自动关闭数据源,除非重新启动应用程序。所以一般不用。default : false(不建议使用)

    c3p0.breakAfterAcquireFailure=false

    #checkoutTimeout:配置当连接池所有连接用完时应用程序getConnection的等待时间。为0则无限等待直至有其他连接释放或者创建新的连接,
    #                 不为0则当时间到的时候如果仍没有获得连接,则会抛出SQLException。
                      其实就是acquireRetryAttempts*acquireRetryDelay。default : 0(与上面两个,有重复,选择其中两个都行)
    c3p0.checkoutTimeout=100


    #其他
    #autoCommitOnClose:连接池在回收数据库连接时是否自动提交事务。如果为false,则会回滚未提交的事务,如果为true,则会自动提交事务。default : false(不建议使用)

    c3p0.autoCommitOnClose=false

    #c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能 通过多线程实现多个操作同时被执行。Default: 3
    c3p0.numHelperThreads=10

    二、Druid

    配置 缺省值

    说明

    name  

    配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。 

    如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)

    jdbcUrl  

    连接数据库的url,不同数据库不一样。例如: 

    mysql : jdbc:mysql://10.20.153.104:3306/druid2 

    oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto

    username  

    连接数据库的用户名

    password  

    连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter

    driverClassName 根据url自动识别

    这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName(建议配置下)

    initialSize 0

    初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时

    maxActive 8

    最大连接池数量

    maxIdle 8

    已经不再使用,配置了也没效果

    minIdle  

    最小连接池数量

    maxWait  

    获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。

    poolPreparedStatements false

    是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。

    maxOpenPreparedStatements -1

    要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100

    validationQuery  

    用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。

    testOnBorrow true

    申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能

    testOnReturn false

    归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能

    testWhileIdle false

    建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。

    timeBetweenEvictionRunsMillis  

    有两个含义: 

    1) Destroy线程会检测连接的间隔时间

    2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明

    numTestsPerEvictionRun  

    不再使用,一个DruidDataSource只支持一个EvictionRun

    minEvictableIdleTimeMillis  
    connectionInitSqls  

    物理连接初始化的时候执行的sql

    exceptionSorter 根据dbType自动识别

    当数据库抛出一些不可恢复的异常时,抛弃连接

    filters  

    属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 

    监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall

    proxyFilters  

    类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系

  • 相关阅读:
    tomcat 部署项目的多种方式
    HttpServletRequestWrapper模拟实现分布式Session
    eclipse4.3 解决没有check out as maven project
    Mysql的Merge存储引擎实现分表查询
    ubuntu gcc低版本过低引起错误
    SpringMVC强大的数据绑定
    Reading Notes : 180212 冯诺依曼计算机
    Reading Notes : 180211 概述计算机
    Struts2 第六讲 -- Struts2的结果类型
    Struts2 第五讲 -- Struts2与Servlet的API解耦
  • 原文地址:https://www.cnblogs.com/a591378955/p/8074372.html
Copyright © 2020-2023  润新知