BoneCP采用LinkedTransferQueue和分区来解决mock环境大量并发获取连接的性能问题。这是一个伪命题。
get ------> exec -------> close
其中exec占的时间通常是99%以上,生产环境中,在get/close这两个点上的竞争通常不激烈,BoneCP这个设计是打错了方向。
exec操作的耗时通常在是millis级别的,get/close是nano级别的,1 millis = 1,000,000 nanos,设计在get/close上最求极端的并发性能不是一个正确的方向。
LRU是一个性能关键指标,特别Oracle,每个Connection对应数据库端的一个进程,如果数据库连接池遵从LRU,有助于数据库服务器优化,这是重要的指标。在测试中,Druid、DBCP、Proxool、JBoss是遵守LRU的。BoneCP、C3P0则不是。BoneCP在mock环境下性能可能好,但在真实环境中则就不好了。