言归正传,说说正题,再仔细看了一遍楼主的code。从楼主叙述来看,是要比较直接创建数据库连接和从池中取连接,孰快孰慢?楼主的结论是连接池更稳定,但是速度差别不大。另一个目的是想知道池容量上到100以后,性能下降问题,楼主对此无结论。
不过从code来看,是测不出楼主想要测试的结论的。因为code不涉及并发,只是顺序的连接断开而已,因此不管用不用连接池,同一时刻最多只有一个连接在连mysql数据库,是测不出楼主的第2个目的的。即使用了池,其实也只是反复用一个连接对象而已,池中其它的空闲连接都没有被用到,池的性能也无从说起。
其实这个测试从code来看是在比较JDBC创建mysql数据库连接速度快,还是对池的操作速度快,实质上是比较对Java集合的元素添加元素删除的速度快,还是创建数据库物理连接速度快。从常识推断,对Java集合的内存操作速度应该很明显的快过创建物理连接,但是楼主测试结论却是无大的速度差别,由于mysql数据库是一个非常轻量级的数据库,创建物理连接速度本来就比较快,而该测试和池的实现也有很大关系,我没有看到池代码,不知道是否是因为池实现很糟糕导致的,因此不好妄加评论,但我认为很可能是池操作过于频繁造成的锁定拖慢了池测试的速度导致的。
其实这种测试我早年也曾经做过,当时是用了mysql和Oracle两种数据库来做比较,池用的是Resin带的连接池,JDBC Driver分别用的官方驱动,经过精心的环境搭建和测试用例的设计,结论是对于Mysql来说使用池的速度是直接创建物理连接速度的两倍多,而对于Oracle来说,使用池的速度是直接创建物理连接速度的5倍左右。其实对于不同的数据库,池的速度是没有差别的,因为都是对Java集合的内存操作,之所以出现Oracle池速度提升更明显的原因是因为Oracle是一个重量级数据库,创建物理连接的速度远远比mysql要慢。
支持robbin!
其实你自己做测试,探索数据库的性能等等都很好,但是robbin指出你的错误你就反唇相讥是不应该的。
为什么?
因为出错是难免的,人人都有错的时候;但是不是每个错误都能被发现并指出的。你应该感谢别人能指出你的错误。robbin可能措辞强硬,你不能接受,但如果robbin看出你的错误却不告诉你呢?
至于能否达到我初始的测试目的,各位没看我的pool的实现,也不怎么好说。
至少我的池中连接的使用的是循环滚动的,锁死的问题是一开就发现和解决掉了。
大家发帖子,只是为了讨论问题。不要整天tmd、白痴、之类的话到处乱说。
技术的争论当然虚心接受,大家说我没tread测不出并发的情况,这我已经承认是我的一个错误了。但我最初做这个的时候目的并不再此,看到要的结果,想到mysql的性能问题,才推出了mysql的错误结论。
但robbin骂人的话贴出来,当然要回敬。不要说不是针对我的,如果不是就自己开帖子去。发再回复中,至少有指桑骂槐的嫌疑。
技术上牛不牛的问题不要争论,大家现在都是api的调用和堆砌者而已。真厉害自己做一套framework去。
要..... 楼主真无聊!
> 姓攵缘谋?>
> 要..... 楼主真无聊!
r u little ball?
摆脱大哥你不要把robbin骂跑了
摆脱大哥你不要把robbin骂跑了
(robbin:我不搞个人崇拜)
完蛋,有灌水的企图和表现