转自:https://www.cnblogs.com/diyunpeng/p/6980098.htmlhtml
username (用户名) |
经过JDBC创建一个链接所需的用户名 |
password (密码) |
经过JDBC创建一个链接所需的密码 |
url (JDBC链接串) |
经过JDBC创建一个链接所需的URL |
driverClassName (JDBC驱动程序) |
所使用的JDBC驱动的类全名 |
connectionProperties (链接属性) |
链接参数是在创建一个新链接时发送给JDBC驱动的 字符串的格式必须是[参数名=参数值;] 提示:用户名和密码属性是须要明确指出的,因此这两个参数不须要包含在这里 |
defaultAutoCommit (自动提交) |
JDBC驱动的缺省值 | 经过这个池建立链接的默认自动提交状态。若是不设置,则setAutoCommit 方法将不被调用。 |
defaultReadOnly (只读设置) |
JDBC驱动的缺省值 | 经过这个池建立链接的默认只读状态。若是不设置,则setReadOnly 方法将不被调用。(部分驱动不支持只读模式,如:Informix) |
defaultTransactionIsolation (事务隔离级别) |
JDBC驱动的缺省值 | 经过这个池建立链接的默认事务隔离策略,设置值为下列中的某一个: (参考 javadoc)(看笔记中另一篇事务属性小结)
|
defaultCatalog (目录,相似于与模式名,但比模式名更加抽象,Oracle、MySQL不支持,其余,MS SQL Server = 数据库名) |
经过这个池建立链接的默认缺省的catalog | |
cacheState (缓存状态) |
true | 若是设置为true,池化的链接将在第一次读或写,以及随后的写的时候缓存当前的只读状态和自动提交设置。这样就省去了对getter的任何进一步的调用时对数据库的额外查询。若是直接访问底层链接,只读状态和/或自动提交设置改变缓存值将不会被反映到当前的状态,在这种状况下,应该将该属性设置为false以禁用缓存。 |
defaultQueryTimeout (查询超时时间) |
null | 若是值不为null,指定一个整数值,用于在建立Statement时,指定为查询超时时间。若是设置为null,则使用驱动程序默认设置。 |
enableAutocommitOnReturn (链接归还到池时,设置为自动提交) |
true | 若是设置为true,则链接被归还到链接池时,会指定设置为autoCommit = true |
rollbackOnReturn (链接归还到池时,回滚全部操做) |
true | 若是设置为true,则链接被归还到链接池时,会自动执行一次rollback();前提是自动提交 = true and 非只读。 |
initialSize (初始链接数) |
0 | 当这个池被启动时初始化的建立的链接个数,起始生效版本:1.2 |
maxTotal (最大活动链接数) |
8 | 能够在这个池中同一时刻被分配的有效链接数的最大值,如设置为负数,则不限制 |
maxIdle (最大空闲链接数) |
8 | 在池中,能够保持空闲状态的最大链接数,超出设置值以外的空闲链接在归还到链接池时将被释放,如设置为负数,则不限制 |
minIdle (最小空闲链接数) |
0 | 能够在池中保持空闲的最小链接数,低于设置值时,空闲链接将被建立,以努力保持最小空闲链接数>=minIdle,如设置为0,则不建立 这里设置的数值生效的前提是:timeBetweenEvictionRunsMillis(空闲对象驱逐线程运行时的休眠毫秒数)被设置为正数。 |
maxWaitMillis (从链接池获取一个链接时,最大的等待时间) |
indefinitely (不肯定) |
设置为-1时,若是没有可用链接,链接池会一直无限期等待,直到获取到链接为止。 若是设置为N(毫秒),则链接池会等待N毫秒,等待不到,则抛出异常。 |
提示: 若是在高负载的系统中将maxIdle的值设置的很低,则你可能会发如今一个新的链接刚刚被建立的时候就当即被关闭了。这是活跃的线程及时关闭链接要比那些打开链接的线程要快,致使空闲的链接数大于maxIdle。高负载系统中maxIdle的最合适的配置值是多样的,可是缺省值是一个好的开始点。java
validationQuery (确认查询SQL) validationQueryTimeout (确认查询SQL的超时时间) |
no timeout |
在链接池返回链接给调用者前用来进行链接校验的查询sql。若是指定,则这个查询必须是一个至少返回一行数据的SQL SELECT语句。若是没有指定,则链接将经过调用isValid() 方法进行校验。 确认链接有效SQL的执行查询超时时间(秒)。若是设置为正数,那么会传递给JDBC驱动的setQueryTimeOut()方法,这个设置对执行【确认有效查询SQL】起做用。 |
testOnCreate (链接建立后,立刻验证有效性) |
false | 指明对象在建立后是否须要验证是否有效,若是对象验证失败,则触发对象建立的租借尝试将失败。 |
testOnBorrow (从链接池获取一个链接时,验证有效性) |
true | 指明在从池中租借对象时是否要进行验证有效,若是对象验证失败,则对象将从池子释放,而后咱们将尝试租借另外一个 |
testOnReturn (链接被归还到链接池时,验证有效性) |
false | 指明在将对象归还给链接池前是否须要校验。 |
testWhileIdle (链接空闲时,验证有效性) |
false | 指明对象是否须要经过对象驱逐者进行校验(若是有的话),假如一个对象验证失败,则对象将被从池中释放。 |
timeBetweenEvictionRunsMillis (空闲对象驱逐线程运行时的休眠毫秒数) |
-1 | 空闲对象驱逐线程运行时的休眠毫秒数,若是设置为非正数,则不运行空闲对象驱逐线程。 |
numTestsPerEvictionRun (在每一个空闲对象驱逐线程运行过程当中中进行检查的对象个数) |
3 | 在每一个空闲对象驱逐线程运行过程当中中进行检查的对象个数。(若是有的话) |
minEvictableIdleTimeMillis (空闲的链接最低要待N毫秒后,才会被释放) |
1000 * 60 * 30 (30分) |
符合对象驱逐条件的对象在池中最小空闲毫秒总数(若是有的话) |
softMiniEvictableIdleTimeMillis (空闲的链接最低要待N毫秒后,才会被释放,但有额外条件) |
-1 | 符合对象驱逐条件的对象在池中最小空闲毫秒总数,额外的条件是池中至少保留有minIdle所指定的个数的链接。当miniEvictableIdleTimeMillis 被设置为一个正数,空闲链接驱逐者首先检测miniEvictableIdleTimeMillis,当空闲链接被驱逐者访问时,首先与miniEvictableIdleTimeMillis 所指定的值进行比较(而不考虑当前池中的空闲链接数),而后比较softMinEvictableIdleTimeMillis所指定的链接数,包括minIdle条件。 |
maxConnLifetimeMillis (一个链接的最大存活毫秒数) |
-1 | 一个链接的最大存活毫秒数。若是超过这个时间,则链接在下次激活、钝化、校验时都将会失败。若是设置为0或小于0的值,则链接的存活时间是无限的。 |
connectionInitSqls (链接被第一次建立时,执行的初始化SQL) |
null | 在第一次建立时用来初始化物理链接的SQL语句集合。这些语句只在配置的链接工厂建立链接时被执行一次。 |
lifo (后进先出) |
true | 设置为true代表链接池(若是池中有可用的空闲链接时)将返回最后一次使用的租借对象(最后进入)。 设置为false则代表池将表现为FIFO队列(先进先出)—将会按照它们被归还的顺序从空闲链接实例池中获取链接 |
logExpiredConnections (一个过时的链接被链接池关闭时,写日志标识) |
true | 若是链接存货时间超过maxConnLifetimeMillis,链接将被链接池会抽,此时默认输出日志。若是设置为false,这不会写日志。 |
poolPreparedStatements (设置该链接池的预处理语句池是否生效) |
false | 设置该链接池的预处理语句池是否生效 |
maxOpenPreparedStatements (能够在语句池中同时分配的最大语句数) |
unlimited | 能够在语句池中同时分配的最大语句数。设置为负数则不限制。 |
这个设置同时做用于预处理语句池. 当一个可用的语句池被建立给每个链接时,经过如下方法建立的预处理语句将被池化。mysql
提示 -要确保你的链接会留下一些资源给其余语句。池化预处理语句可能会在数据库中保持他们的游标,可能会引发链接的游标越界,尤为是maxOpenPreparedStatements的值被设置为默认值(无限的),并且一个应用程序可能会为每一个链接打开大量不一样的预处理语句。为了不这个问题maxOpenPreparedStatements应该被设置为一个小于链接能够打开的最大游标数的值。sql
accessToUnderlyingConnectionAllowed (控制PoolGuard是否能够访问底层链接 ) |
false | 控制PoolGuard是否能够访问底层链接 |
若是容许访问的话,使用以下代码结构:数据库
Connection conn = ds.getConnection();
Connection dconn =((DelegatingConnection) conn).getInnermostDelegate();
...
conn.close()
默认值为false,这是一个有着潜在风险的操做,使用不当可能会致使很是严重的后果。(在守护链接已被关闭的状况下,关闭底层链接或者继续使用它),只有在你须要直接访问驱动的特有扩展是能够谨慎使用。api
NOTE: 除了最原始那个以外,不要关闭底层链接缓存
removeAbandonedOnMaintenance removeAbandonedOnBorrow () |
false | 标记是否删除超过removeAbandonedTimout所指定时间的被遗弃的链接。 若是设置为true,则一个链接在超过removeAbandonedTimeout所设定的时间未使用即被认为是应该被抛弃并应该被移除的。 建立一个语句,预处理语句,可调用语句或使用它们其中的一个执行查询(使用执行方法中的某一个)会从新设置其父链接的lastUsed 属性。 在写操做较少的应用程序中将该参数设置为true能够将数据库链接从链接关闭失败中恢复。 |
removeAbandonedTimeout (一个被抛弃链接能够被移除的超时时间) |
300(秒) | 一个被抛弃链接能够被移除的超时时间,单位为秒 |
logAbandoned | false | 标志是否为应用程序中遗弃语句或链接的代码开启日志堆栈追踪。 由于一个堆栈跟踪已被建立,被抛弃的语句和链接相关的日志将被覆盖到打开每一个链接或者建立一个Statement时 |
若是你启用了removeAbandoned,则一个链接被池回收再利用是可能的,由于它被认为是已遗弃 在(getNumIdle() < 2) and (getNumActive() > getMaxTotal() - 3)成立时,这个机制将被触发。url
例如, maxTotal=20 ,这里有18个活跃链接,一个限制链接,将触发 "removeAbandoned"。可是只有在活动链接超过 "removeAbandonedTimeout" 所指定的秒数内未使用才会被删除(默认为300秒)。遍历一个结果集并不被统计为被使用,建立一个语句,预处理语句,可调用语句或使用它们其中的一个执行查询(使用执行方法中的某一个)会从新设置其父链接的lastUsed 属性。spa
Parameter | Default | Description |
---|---|---|
fastFailValidation (验证快速失败) |
false | 若是发生致命的异常,验证语句会快速失败。而不会再执行isValid(),也再也不去执行验证查询语句。致命的异常码(SQL_STATE)指如下:
|
disconnectionSqlCodes (异常码) |
null | 以逗号分割的SQL_STATE码,fastFailValidation 为true时,才会生效。 |