似乎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))
的准确含义。它只是具体实施吗? DBCP2或HikariCP如何实际检查连接状态?
没有活动交易的连接会在下面标记为空闲吗?
alive or idle connections
答案 0 :(得分:1)
“空闲”表示当前没有借出连接。 (正如Mark Rotteveel在评论中所说,这与JDBC规范无关,因为JDBC并不专门处理连接池。)“Active”表示连接有效且可以使用。很容易判断某些东西是否空闲,因为池明确地跟踪它,并且更难以知道它是否有效,因为它是网络连接并且可能随时失败。
连接池通过在连接上运行一些测试sql来检查连接的状态,其中sql通常通过配置属性提供,这类似于“从双选择1”。
答案 1 :(得分:1)
您应区分空闲 / 借用池化连接(由Nathan讨论)和 有效 / < strong>无效连接。
这些属性是正交的,但通常存在一个属性,例如 testOnBorrow for Tomcat Connection Pool,设置时可以强制借用的连接有效(即能够执行验证查询)。
还可以设置时间限制以从连接池中删除长时间空闲的连接(例如 minEvictableIdleTimeMillis )。类似对于删除废弃的连接是有效的,即那些被应用程序“忘记”返回池中的连接。 ( removeAbandonedTimeout )。
你是对的,它是所有实现特定的。