Chris2018998 / beecp

A small JDBC Connection pool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请问如何理解连接池的lastActivyTime?

WangChangJuan opened this issue · comments

很高兴看到您的再次提问,我的理解如下(可能不准确)

它表示使用者对池中的连接最近一次成功访问时刻点,通常是毫秒,它是被用于测试连接是否存活性(换句话说,即上一次访问时刻点是有效的(活的),在指定时间范围内无须对连接进行存活再验证。)

目前发现Druid只是在执行SQL的地方记时,光连接池也是如此,其他调用不计时,那岂不是时间点记录不准确?

理论上来说调用一次都应该要记录一次时间,无论是Connection,Statement,ResultSet.
但是如果在所有方法调用加上这个时间更新,时间点是准确了,但是在高并发下,多个线程在多处都读取时间,对性能肯定有影响,。Connection主要的作用就是用来执行SQL的,记录关键操作时刻是有道理的。个人没有阅读两位大师的作品,不清楚他们是如何考虑的。具体您可以去他们的论坛直接发帖问问。

其实做一个测试,多个线程读取System.currentTimeMillis() ,比如100个线程各自读取100次,和单个线程读取10000次对比一下总耗时间。

谢谢您的提醒。

发了帖没有回应,隔壁的程序,又长又臭,看起来好费劲,居然有那么多人给星星。
**超越国外同类产品,少之又少,您这个作品算得上硬货啊,真的,一点也不夸张。
好的作品要好好宣传一下,让它发光发亮。

谢谢肯定。 再多做几个版本,后面有机会再说吧