JDBC上的Alive或Idle连接

时间:2015-09-28 13:13:17

标签: jdbc apache-commons-dbcp hikaricp jdbc-pool

似乎JDBC Spec没有详细说明数据源连接池中df1 <- structure(list(v1 = c("2L", "2L", "2L", "2L", "2L"), v2 = c(7800161L, 7800182L, 7800202L, 7800231L, 7800235L), v3 = c("2L_7800161_SNP", "2L_7800182_SNP", "2L_7800202_SNP", "2L_7800231_SNP", "2L_7800235_SNP" ), v4 = c("G", "C", "C", "C", "A"), v5 = c("A", "T", "G", "T", "G"), v6 = c(999L, 999L, 999L, 999L, 999L), v7 = c("PASS", "PASS", "PASS", "PASS", "PASS"), v8 = c("REFCOUNT=198;ALTCOUNT=5", "REFCOUNT=174;ALTCOUNT=21", "REFCOUNT=152;ALTCOUNT=36", "REFCOUNT=193;ALTCOUNT=8", "REFCOUNT=199;ALTCOUNT=2" )), .Names = c("v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8" ), class = "data.frame", row.names = c(NA, -5L)) 的准确含义。它只是具体实施吗? DBCP2HikariCP如何实际检查连接状态?

没有活动交易的连接会在下面标记为空闲吗?

alive or idle connections

2 个答案:

答案 0 :(得分:1)

“空闲”表示当前没有借出连接。 (正如Mark Rotteveel在评论中所说,这与JDBC规范无关,因为JDBC并不专门处理连接池。)“Active”表示连接有效且可以使用。很容易判断某些东西是否空闲,因为池明确地跟踪它,并且更难以知道它是否有效,因为它是网络连接并且可能随时失败。

连接池通过在连接上运行一些测试sql来检查连接的状态,其中sql通常通过配置属性提供,这类似于“从双选择1”。

答案 1 :(得分:1)

您应区分空闲 / 借用池化连接(由Nathan讨论) 有效 / < strong>无效连接。

这些属性是正交的,但通常存在一个属性,例如 testOnBorrow for Tomcat Connection Pool,设置时可以强制借用的连接有效(即能够执行验证查询)。

还可以设置时间限制以从连接池中删除长时间空闲的连接(例如 minEvictableIdleTimeMillis )。类似对于删除废弃的连接是有效的,即那些被应用程序“忘记”返回池中的连接。 ( removeAbandonedTimeout )。

你是对的,它是所有实现特定的