在工作中经常要和各种连接池组件打交道,各种参数眼花撩乱,再也不想因为连接池配置光顾度娘了。今天总结的主要是几大常用的数据库连接池配置,redis连接池准备ing。内容主要来自各官方文档。
Druid
官方文档:https://github.com/alibaba/dr...
- 连接池类:com.alibaba.druid.pool.DruidDataSource
配置 | 缺省值 | 说明 | 性能优化 | 备注 |
---|---|---|---|---|
name | null | 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this). 另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。详情-点此处。 | / | / |
url | null | 连接数据库的url,不同数据库不一样。例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto | / | / |
username | null | 连接数据库的用户名 | / | / |
password | null | 连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里 | / | / |
driverClassName | 根据url自动识别 | 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName | / | / |
initialSize | 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 | 可以配置和maxActive相同数量 | / | |
maxActive | 8 | 最大连接池数量 | / | / |
maxIdle | 8 | 已经不再使用,配置了也没效果 | / | / |
minIdle | null | 最小连接池数量 | 建议配置和maxActive相同数量 | / |
maxWait | null | 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 | / | / |
dataSouce.setUseUnfairLock(true) | 配置了maxWait之后,缺省启用公平锁,并发效率会有所下降 | / | / | |
poolPreparedStatements | false | 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。 | oracle下可以配置 | / |
maxPoolPreparedStatementPerConnectionSize | -1 | 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100 | oracle下可以配置 | / |
validationQuery | null | 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。 | / | / |
validationQueryTimeout | null | 单位:秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法 | / | / |
testOnBorrow | true | 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 | 不建议配置 | / |
testOnReturn | false | 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 | 不建议配置 | / |
testWhileIdle | false | 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 | 建议取代testOnBorrow和testOnReturn,其会影响获取db连接时的性能 | 配合testWhileIdle=true 和timeBetweenEvictionRunsMillis来优化,无需在每次借用和归还连接时检测连接可用性,而是定期在连接空闲时进行检测,减少性能损耗 |
keepAlive | false (1.0.28) | 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。 | / | / |
defualtAutoCommit | true | 事务自动提交 | ||
timeBetweenEvictionRunsMillis | 1分钟(1.0.14) | 有两个含义: 1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明 | / | / |
numTestsPerEvictionRun | 30分钟(1.0.14) | 不再使用,一个DruidDataSource只支持一个EvictionRun | / | / |
minEvictableIdleTimeMillis | 连接保持空闲而不被驱逐的最小时间 | / | / | |
connectionInitSqls | 物理连接初始化的时候执行的sql | / | / | |
exceptionSorter | 根据dbType自动识别 | 当数据库抛出一些不可恢复的异常时,抛弃连接 | / | / |
filters | null | 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall | / | / |
proxyFilters | null | 类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系 | / | / |
removeAbandoned | false | 配置removeAbandoned对性能会有一些影响,建议怀疑存在泄漏之后再打开。在上面的配置中,如果连接超过30分钟未关闭,就会被强行回收,并且日志记录连接申请时的调用堆栈 。 | / | 如果开启此配置,默认会打印堆栈信息,对性能影响较大。 |
Hikari
官方文档:https://github.com/brettwoold...
- 连接池类:com.zaxxer.hikari.HikariDataSource
配置 | 缺省值 | 说明 | 性能优化 |
---|---|---|---|
autoCommit | true | 自动提交从池中返回的连接 | / |
connectionTimeout | 30000ms | 等待来自池的连接的最大毫秒数 | / |
idleTimeout | 600000ms | 连接允许在池中闲置的最长时间【一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟】 | / |
maxLifetime | 1800000ms | 池中连接最长生命周期 | / |
keepaliveTime | 0 (disabled) | 控制 HikariCP 尝试保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于该 maxLifetime值。“keepalive”只会发生在空闲连接上。当针对给定连接进行“保持连接”的时间到了时,该连接将从池中删除、“ping”,然后返回到池中。'ping' 是其中之一:调用 JDBC4isValid()方法,或执行 connectionTestQuery. 通常,池外的持续时间应该以个位数毫秒甚至亚毫秒为单位进行测量,因此应该几乎没有或没有明显的性能影响。最小允许值为 30000 毫秒(30 秒), 默认值:0(禁用) | / |
connectionTestQuery | null | 如果您的驱动程序支持JDBC4,我们强烈建议您不要设置此属性 | 建议不设置 |
minimumIdle | 10 | 池中维护的最小空闲连接数【官方推荐不设置此值,默认同最大连接数相同】 | 官方推荐不设置此值,默认同最大连接数相同 |
maximumPoolSize | 10 | 池中最大连接数,包括闲置和使用中的连接 | / |
metricRegistry | null | 该属性允许您指定一个 Codahale / Dropwizard MetricRegistry 的实例,供池使用以记录各种指标 | / |
healthCheckRegistry | null | 该属性允许您指定池使用的Codahale / Dropwizard HealthCheckRegistry的实例来报告当前健康信息 | / |
poolName | HikariPool-1 | 连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置 | / |
initializationFailTimeout | 1 | 如果池无法成功初始化连接,则此属性控制池是否将 fail fast | / |
isolateInternalQueries | false | 是否在其自己的事务中隔离内部池查询,例如连接活动测试 | / |
allowPoolSuspension | false | 控制池是否可以通过JMX暂停和恢复 | / |
readOnly | false | 从池中获取的连接是否默认处于只读模式 | / |
registerMbeans | false | 是否注册JMX管理Bean(MBeans) | / |
catalog | null | 为支持 catalog 概念的数据库设置默认 catalog | / |
connectionInitSql | null | 该属性设置一个SQL语句,在将每个新连接创建后,将其添加到池中之前执行该语句。 | / |
driverClassName | null | HikariCP将尝试通过仅基于jdbcUrl的DriverManager解析驱动程序,但对于一些较旧的驱动程序,还必须指定driverClassName | / |
transactionIsolation | null | 控制从池返回的连接的默认事务隔离级别 | / |
validationTimeout | 5000 | 连接将被测试活动的最大时间量 | / |
leakDetectionThreshold | 记录消息之前连接可能离开池的时间量,表示可能的连接泄漏 | / | |
dataSource | null | 这个属性允许你直接设置数据源的实例被池包装,而不是让HikariCP通过反射来构造它 | / |
schema | null | 该属性为支持模式概念的数据库设置默认模式 | / |
threadFactory | null | 此属性允许您设置将用于创建池使用的所有线程的java.util.concurrent.ThreadFactory的实例。 | / |
scheduledExecutor | null | 此属性允许您设置将用于各种内部计划任务的java.util.concurrent.ScheduledExecutorService实例 | / |
DBCP
官方文档:https://commons.apache.org/pr...
- 连接池类:org.apache.commons.dbcp2.BasicDataSource
配置 | 缺省值 | 说明 | 性能优化 | 备注 |
---|---|---|---|---|
username | null | 传递给JDBC驱动的用于建立连接的用户名 | / | / |
password | null | 传递给JDBC驱动的用于建立连接的密码 | / | / |
url | null | 传递给JDBC驱动的用于建立连接的URL | / | / |
driverClassName | null | 使用的JDBC驱动的完整有效的java 类名 | / | / |
connectionProperties | null | 当建立新连接时被发送给JDBC驱动的连接参数 | / | / |
defaultAutoCommit | true | 连接池创建的连接的默认的auto-commit状态 | / | / |
defaultReadOnly | driver default | 连接池创建的连接的默认的read-only状态. 如果没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,比如:Informix) | / | / |
defaultCatalog | null | 连接池创建的连接的默认的catalog | / | / |
defaultTransactionIsolation | driver default | 连接池创建的连接的默认的TransactionIsolation状态. 下面列表当中的某一个: (参考javadoc) | / | / |
initialSize | 0 | 初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持 | / | / |
maxActive | 8 | 最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制 | / | / |
maxIdle | 8 | 最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制 | / | / |
minIdle | 0 | 最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建 | / | / |
maxWait | 无限 | 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数), 超过时间则抛出异常,如果设置为-1表示无限等待 | / | / |
validationQuery | null | SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录 | / | / |
testOnBorrow | true | 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串 | / | / |
testOnReturn | false | 指明是否在归还到池中前进行检验注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串 | / | / |
testWhileIdle | false | 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串 | 建议使用此设置,代替testOnBorrow | / |
timeBetweenEvictionRunsMillis | -1 | 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程 | / | / |
numTestsPerEvictionRun | 3 | 在每次空闲连接回收器线程(如果有)运行时检查的连接数量 | / | / |
minEvictableIdleTimeMillis | 1000 60 30 | 连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒 | / | / |
poolPreparedStatements | false | 开启池的prepared statement 池功能,当开启时, 将为每个连接创建一个statement池,并且被下面方法创建的PreparedStatements将被缓存起来: | / | / |
maxOpenPreparedStatements | 0 | statement池能够同时分配的打开的statements的最大数量, 如果设置为0表示不限制 | / | / |
removeAbandoned | false | 标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout.设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接. | / | 如果开启”removeAbandoned”,那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发.举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发”removeAbandoned”.但是活动连接只有在没有被使用的时间超过”removeAbandonedTimeout”时才被删除,默认300秒. |
removeAbandonedTimeout | 300 | 泄露的连接可以被删除的超时值, 单位秒 | / | / |
logAbandoned | false | 标记当Statement或连接被泄露时是否打印程序的stack traces日志。被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement,因为需要生成stack trace。 | 会导致线程爬栈 | / |
C3P0
官方文档:https://www.mchange.com/proje...
- 连接池类:com.mchange.v2.resourcepool.BasicResourcePool
配置 | 缺省值 | 说明 | 性能优化 |
---|---|---|---|
acquireIncrement | 3 | 当连接池中的连接耗尽的时,c3p0一次同时创建的连接数 | / |
acquireRetryAttempts | 30 | 定义在从数据库获取新连接失败后重复尝试的次数 | / |
acquireRetryDelay | 1000 | 两次连接中间隔时间,单位毫秒 | / |
autoCommitOnClose | false | 连接关闭时默认将所有未提交的操作回滚 | / |
automaticTestTable | null | c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用 | / |
breakAfterAcquireFailure | false | 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭 | / |
checkoutTimeout | 0 | 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待 | / |
connectionTesterClassName | com.mchange.v2.c3p0.impl.DefaultConnectionTester | 通过实现ConnectionTester或QueryConnectionTester的类来测试连接。类名需制定全路径 | / |
forceIgnoreUnresolvedTransactions | false | 如果您希望 c3p0 将事务管理留给您,并且既不提交也不回滚(也不修改 Connection autoCommit的状态),您可以将forceIgnoreUnresolvedTransactions设置为 true | 作者强烈建议不使用的一个属性 |
idleConnectionTestPeriod | 0 | 每xxx秒检查所有连接池中的空闲连接 | / |
initialPoolSize | 3 | 初始化池的连接数,取值应在minPoolSize与maxPoolSize之间 | / |
maxIdleTime | 0 | 最大空闲时间,xxx秒内未使用则连接被丢弃。若为0则永不丢弃 | / |
minPoolSize | 3 | 连接池中保留的最小连接数 | / |
maxPoolSize | 15 | 连接池中保留的最大连接数 | / |
maxStatements | 0 | JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭 | / |
maxStatementsPerConnection | 0 | maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数 | / |
numHelperThreads | 3 | 帮助配置数据源线程池的行为。默认情况下,每个数据源只有三个关联的辅助线程,负责诸如连接测试工作 | / |
overrideDefaultUser | null | 当用户调用getConnection()时使root用户成为去获取连接的用户。主要用于连接池连接非c3p0的数据源时 | / |
password | null | 密码 | / |
user | null | / | / |
preferredTestQuery | null | 定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意:测试的表必须在初始数据源的时候就存在 | / |
testConnectionOnCheckout | false | 因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都将校验其有效性。 | 建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能 |
Tomcat JDBC
官方文档:https://tomcat.apache.org/tom...
- 连接池类:org.apache.tomcat.jdbc.pool.DataSource
配置 | 缺省值 | 说明 | 性能优化 |
---|---|---|---|
defaultAutoCommit | null | (布尔值)连接池所创建的连接默认自动提交状态。如果未设置,则默认采用 JDBC 驱动的缺省值(如果未设置,则不会调用 setAutoCommit 方法)。 | |
defaultReadOnly | null | (布尔值)连接池所创建的连接默认只读状态。如果未设置,将不会调用 setReadOnly 方法。(有些驱动并不支持只读模式,比如:informix) | |
defaultTransactionIsolation | null | (字符串)连接池所创建的连接的默认事务隔离状态。取值范围为:(参考 javadoc) NONE 、 READ_COMMITTED 、 READ_UNCOMMITTED 、 REPEATABLE_READ 、 SERIALIZABLE;如果未设置该值,则不会调用任何方法,默认为 JDBC 驱动。 | |
defaultCatalog | (字符串)连接池所创建的连接的默认catalog。 | ||
driverClassName | (字符串)所要使用的 JDBC 驱动的完全限定的 Java 类名。该驱动必须能从与 tomcat-jdbc.jar 同样的类加载器访问 | ||
username | (字符串)传入 JDBC 驱动以便建立连接的连接用户名。注意,DataSource.getConnection(username,password) 方法默认不会使用传入该方法内的凭证,但会使用这里的配置信息。可参看 alternateUsernameAllowed 了解更多详情。 | ||
password | (字符串)传入 JDBC 驱动以便建立连接的连接密码。注意,DataSource.getConnection(username,password) 方法默认不会使用传入该方法内的凭证,但会使用这里的配置信息。可参看 alternateUsernameAllowed 了解更多详情。 | ||
maxActive | 100 | 整形值)池同时能分配的活跃连接的最大数目。默认为 100。 | |
maxIdle | 100 | (整型值)池始终都应保留的连接的最大数目。默认为 maxActive:100。会周期性检查空闲连接(如果启用该功能),留滞时间超过 minEvictableIdleTimeMillis 的空闲连接将会被释放。(请参考 testWhileIdle) | |
minIdle | 10 | (整型值)池始终都应保留的连接的最小数目。如果验证查询失败,则连接池会缩减该值。默认值取自 initialSize:10(请参考 testWhileIdle)。 | |
initialSize | 10 | (整型值)连接器启动时创建的初始连接数。默认为 10。 | |
maxWait | 30000 | (整型值)在抛出异常之前,连接池等待(没有可用连接时)返回连接的最长时间,以毫秒计。默认为 30000(30 秒) | |
testOnBorrow | false | (布尔值)默认值为 false。从池中借出对象之前,是否对其进行验证。如果对象验证失败,将其从池中清除,再接着去借下一个。注意:为了让 true 值生效,validationQuery 参数必须为非空字符串。为了实现更高效的验证,可以采用 validationInterval。 | |
testOnReturn | false | (布尔值)默认值为 false。将对象返回池之前,是否对齐进行验证。注意:为了让 true 值生效,validationQuery 参数必须为非空字符串。 | |
testWhileIdle | false | (布尔值)是否通过空闲对象清除者(如果存在的话)验证对象。如果对象验证失败,则将其从池中清除。注意:为了让 true 值生效,validationQuery 参数必须为非空字符串。该属性默认值为 false,为了运行池的清除/测试线程,必须设置该值。(另请参阅 timeBetweenEvictionRunsMillis) | |
validationQuery | null | (字符串)在将池中连接返回给调用者之前,用于验证这些连接的 SQL 查询。如果指定该值,则该查询不必返回任何数据,只是不抛出 SQLException 异常。默认为 null。实例值为:SELECT 1(MySQL) select 1 from dual(Oracle) SELECT 1(MySQL Server)。 | |
validationQueryTimeout | -1 | (整型值)连接验证失败前的超时时间(以秒计)。通过在执行 validationQuery 的语句上调用 java.sql.Statement.setQueryTimeout(seconds) 来实现。池本身并不会让查询超时,完全是由 JDBC 来强制实现。若该值小于或等于 0,则禁用该功能。默认为 -1。 | |
validatorClassName | null | (字符串)实现 org.apache.tomcat.jdbc.pool.Validator 接口并提供了一个无参(可能是隐式的)构造函数的类名。如果指定该值,将通过该类来创建一个 Validator 实例来验证连接,代替任何验证查询。默认为 null,范例值为:com.mycompany.project.SimpleValidator。 | |
timeBetweenEvictionRunsMillis | 5000 | (整型值)空闲连接验证/清除线程运行之间的休眠时间(以毫秒计)。不能低于 1 秒。该值决定了我们检查空闲连接、废弃连接的频率,以及验证空闲连接的频率。默认为 5000(5 秒) | |
numTestsPerEvictionRun | (整型值)Tomcat JDBC 连接池没有用到这个属性。 | ||
minEvictableIdleTimeMillis | 60000 | (整型值)在被确定应被清除之前,对象在池中保持空闲状态的最短时间(以毫秒计)。默认为 60000(60 秒) | |
accessToUnderlyingConnectionAllowed | (布尔值)没有用到的属性。可以在归入池内的连接上调用 unwrap来访问。参阅 javax.sql.DataSource 接口的相关介绍,或者通过反射调用 getConnection,或者将对象映射为 javax.sql.PooledConnection。 | ||
removeAbandoned | false | (布尔值)该值为标志(Flag)值,表示如果连接时间超出了 removeAbandonedTimeout,则将清除废弃连接。如果该值被设置为 true,则如果连接时间大于 removeAbandonedTimeout,该连接会被认为是废弃连接,应予以清除。若应用关闭连接失败时,将该值设为 true 能够恢复该应用的数据库连接。另请参阅 logAbandoned。默认值为 false。 | |
removeAbandonedTimeout | 60 | (整型值)在废弃连接(仍在使用)可以被清除之前的超时秒数。默认为 60(60 秒)。应把该值设定为应用可能具有的运行时间最长的查询。 | |
logAbandoned | false | (布尔值)标志能够针对丢弃连接的应用代码,进行堆栈跟踪记录。由于生成堆栈跟踪,对废弃连接的日志记录会增加每一个借取连接的开销。默认为 false | |
connectionProperties | null | (字符串)在建立新连接时,发送给 JDBC 驱动的连接属性。字符串格式必须为:[propertyName=property;]*。注意:user 与 password 属性会显式传入,因此这里并不需要包括它们。默认为 null。 | |
poolPreparedStatements | (布尔值)未使用的属性 | ||
maxOpenPreparedStatements | (整型值)未使用的属性 | ||
initSQL | null | 字符串值。当连接第一次创建时,运行的自定义查询 | |
jdbcInterceptors | 字符串。继承自类 org.apache.tomcat.jdbc.pool.JdbcInterceptor 的子类类名列表,由分号分隔。这些拦截器将会插入到 java.sql.Connection 对象的操作队列中。 预定义的拦截器有:org.apache.tomcat.jdbc.pool.interceptor ConnectionState——记录自动提交、只读、catalog以及事务隔离级别等状态。org.apache.tomcat.jdbc.pool.interceptor,StatementFinalizer——记录打开的语句,并当连接返回池后关闭它们。有关更多预定义拦截器的详尽描述,可参阅JDBC 拦截器 | ||
validationInterval | 30000 | 长整型值。为避免过度验证而设定的频率时间值(以秒计)。最多以这种频率运行验证。如果连接应该进行验证,但却没能在此间隔时间内得到验证,则会重新对其进行验证。默认为 30000(30 秒) | |
jmxEnabled | true | 布尔值。是否利用 JMX 注册连接池 | |
fairQueue | true | 布尔值。假如想用真正的 FIFO 方式公平对待 getConnection 调用,则取值为 true。对空闲连接列表将采用 org.apache.tomcat.jdbc.pool.FairBlockingQueue 实现。默认值为 true。如果想使用异步连接获取功能,则必须使用该标志。设置该标志可保证线程能够按照连接抵达顺序来接收连接。在性能测试时,锁及锁等待的实现方式有很大差异。当 fairQueue=true 时,根据所运行的操作系统,存在一个决策过程。假如系统运行在 Linux 操作系统(属性 os.name = linux)上,为了禁止这个 Linux 专有行为,但仍想使用公平队列,那么只需在连接池类加载之前,将 org.apache.tomcat.jdbc.pool.FairBlockingQueue.ignoreOS=true 添加到系统属性上。 | |
abandonWhenPercentageFull | 0 | 整型值。除非使用中连接的数目超过 abandonWhenPercentageFull 中定义的百分比,否则不会关闭并报告已废弃的连接(因为超时)。取值范围为 0-100。默认值为 0,意味着只要达到 removeAbandonedTimeout,就应关闭连接。 | |
maxAge | 0 | 长整型值。连接保持时间(以毫秒计)。当连接要返回池中时,连接池会检查是否达到 now - time-when-connected > maxAge 的条件,如果条件达成,则关闭该连接,不再将其返回池中。默认值为 0,意味着连接将保持开放状态,在将连接返回池中时,不会执行任何年龄检查。 | |
useEquals | true | 布尔值。如果想让 ProxyConnection 类使用 String.equals,则将该值设为 true;若想在对比方法名称时使用 ==,则应将其设为 false。该属性不能用于任何已添加的拦截器中,因为那些拦截器都是分别配置的。默认值为 true。 | |
suspectTimeout | 0 | 整型值。超时时间(以秒计)。默认值为 0。类似于 removeAbandonedTimeout,但不会把连接当做废弃连接从而有可能关闭连接。如果 logAbandoned 设为 true,它只会记录下警告。如果该值小于或等于 0,则不会执行任何怀疑式检查。如果超时值大于 0,而连接还没有被废弃,或者废弃检查被禁用时,才会执行怀疑式检查。如果某个连接被怀疑到,则记录下 WARN 信息并发送一个 JMX 通知。 | |
rollbackOnReturn | false | 布尔值。如果 autoCommit==false,那么当连接返回池中时,池会在连接上调用回滚方法,从而终止事务。默认值为 false。 | |
commitOnReturn | false | 布尔值。如果 autoCommit==false,那么当连接返回池中时,池会在连接上调用提交方法,从而完成事务;如果 rollbackOnReturn==true,则忽略该属性。默认值为 false。 | |
alternateUsernameAllowed | false | 布尔值。出于性能考虑,JDBC 连接池默认会忽略 DataSource.getConnection(username,password)调用,只返回之前池化的具有全局配置属性 username 和 password的连接。但经过配置,连接池还可以允许使用不同的凭证来请求每一个连接。为了启用这项在DataSource.getConnection(username,password)调用中描述的功能,只需将 alternateUsernameAllowed 设为 true。如果你请求一个连接,凭证为 user 1/password 1,而连接之前使用的是 user 2/password 2 凭证,那么连接将被关闭,重新利用请求的凭证来开启。按照这种方式,池的容量始终以全局级别管理,而不是限于模式(schema)级别。默认值为 false。该属性作为一个改进方案,被添加到了 bug 50025 中。 | |
dataSource | null | (javax.sql.DataSource)将数据源注入连接池,从而使池利用数据源来获取连接,而不是利用 java.sql.Driver 接口来建立连接。它非常适于使用数据源(而非连接字符串)来池化 XA 连接或者已建立的连接时。默认值为 null。 | |
dataSourceJNDI | null | 字符串。在 JNDI 中查找的数据源的 JNDI 名称,随后将用于建立数据库连接。参看 datasource 属性的介绍。默认值为 null。 | |
useDisposableConnectionFacade | true | 布尔值。如果希望在连接上放上一个门面对象,从而使连接在关闭后无法重用,则要将值设为 true。这能防止线程继续引用一个已被关闭的连接,并继续在连接上查询。默认值为 true。 | |
logValidationErrors | false | 布尔值。设为 true 时,能将验证阶段的错误记录到日志文件中,错误会被记录为 SEVERE。考虑到了向后兼容性,默认值为 false。 | |
propagateInterruptState | false | 布尔值。传播已中断的线程(还没有清除中断状态)的中断状态。考虑到了向后兼容性,默认值为 false。 | |
ignoreExceptionOnPreLoad | false | 布尔值。在初始化池时,是否忽略连接创建错误。取值为 true时表示忽略;设为 false 时,抛出异常,从而宣告池初始化失败。默认值为 false。 |
markdown编辑这么长的表格真心心累😟
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。