数据库连接池效率讨论 代码式的数据库连接池程序:它的通用性强,没有服务器之间转换的调整问题,但是效率没有web服务器自带的连接池高,而后者则相反 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实服务器自带的连接池也只读取了一次配置文件而已,这些工作是在服务器启动过程中完成的,对于后来使用这个连接池的影响是微不足道.对于自己写的连接池和服务器自带的连接池的性能和效率,我个人觉得应该是差不多的.刚才对我自己写的数据库连接池进行了测试,打开5个相同的JSP页面分别进行获得100000个数据库连接的测试,数据如下(单位:毫秒):页面一: 总用时:688828毫秒 平均用时:6.88828 毫秒 成功数为:100000 失败数为:0 成功率:100.0% 失败率:0.0%页面二: 总用时:1567266毫秒 平均用时:15.67266 毫秒 成功数为:100000 失败数为:0 成功率:100.0% 失败率:0.0%页面三: 总用时:1586141毫秒 平均用时:15.86141 毫秒 成功数为:100000 失败数为:0 成功率:100.0% 失败率:0.0%页面四: 总用时:1571969毫秒 平均用时:15.71969 毫秒 成功数为:100000 失败数为:0 成功率:100.0% 失败率:0.0%页面五: 总用时:1505359毫秒 平均用时:15.05359 毫秒 成功数为:100000 失败数为:0 成功率:100.0% 失败率:0.0%平均用时:13.83913 毫秒说明: 此连接池程序包含读取属性配置文件,写屏幕及日志文件 页面一: 先于其他页面打开,在打开此页面一段时间后再打开其他的页面. 页面五: 在页面四打开一段时间后,再打开此页面. 在获得数据库连接的方法上用了synchronized进行同步处理. 非常感谢yaray(雅睿,生活在别处) 所做的测试我想服务器自带的连接池和自己写的连接池是否存这个区别-----以weblogic为例,他的连接分配回收的代码可能是c++或是其他的编写服务器的语言而不是java,这个时间区别是否可以忽略不计呢? 有没有好的开源的连接池,能够解决数据库断了之后不用重新启动web服务器。还能自动刷新去掉坏连接。 To : gks_cn(981530) 自己写,就可以解决此类你的问题. 不能仅以获得连接的速度来衡量,比如WebSphere提供的连接池,实现了Statement的Cache,数据库操作的效率可能很高(没有做实际的测试)。 大家应该听说过clone的吧.如果采用clone来"生成"数据连接的话,听说可加快"生成"数据库连接,不知道大家有谁这样用过?我的想法是: 在生成连接池对象的时候(采用Singleton模式),生成一个数据库连接(此连接是不放入连接池的,用静态变量保存),然后再利用此连接进行clone,将clone生成的连接放在连接池中,以供调用.听说clone有深层clone和浅层clone之分,不知道如何区分及如何实现? 望请赐教!!! 纠正一下: 错误:clone有深层clone和浅层clone之分 正确:clone有"影子clone"和"深度clone"之分。Clone讲解: http://www-900.ibm.com/developerWorks/cn/java/l-jpointer/index.shtml yaray(雅睿,生活在别处) ( ) : 你做的是100000个数据库连接的测试还是取100000个数据的连接的测试? 用数据库连接池连接sqlserver相当慢,象死机。改用odbc连接,执行速度就好多了,象正常一样。 Struts默认语言总去找***_en.properties? ajax与struts集合相关问题 (新手问题)程序里面的一个问题 JSP连接ACCESS问题 急啊 入门级问题 mysql+jsp中的sql问题!!急急 如何将中文字符转换成url编码方式? Servlet调用的问题??? 细雨蒙蒙! weblogic6.1(windows2000)中如何配置classpath?servlet又如何调用? jsp的配置问题? Microsoft SQL Server 2000 Driver for JDBC在哪下载?
总用时:688828毫秒
平均用时:6.88828 毫秒
成功数为:100000
失败数为:0
成功率:100.0%
失败率:0.0%页面二:
总用时:1567266毫秒
平均用时:15.67266 毫秒
成功数为:100000
失败数为:0
成功率:100.0%
失败率:0.0%页面三:
总用时:1586141毫秒
平均用时:15.86141 毫秒
成功数为:100000
失败数为:0
成功率:100.0%
失败率:0.0%页面四:
总用时:1571969毫秒
平均用时:15.71969 毫秒
成功数为:100000
失败数为:0
成功率:100.0%
失败率:0.0%页面五:
总用时:1505359毫秒
平均用时:15.05359 毫秒
成功数为:100000
失败数为:0
成功率:100.0%
失败率:0.0%平均用时:13.83913 毫秒说明:
此连接池程序包含读取属性配置文件,写屏幕及日志文件
页面一: 先于其他页面打开,在打开此页面一段时间后再打开其他的页面.
页面五: 在页面四打开一段时间后,再打开此页面. 在获得数据库连接的方法上用了synchronized进行同步处理.
自己写,就可以解决此类你的问题.
在生成连接池对象的时候(采用Singleton模式),生成一个数据库连接(此连接是不放入连接池的,用静态变量保存),然后再利用此连接进行clone,将clone生成的连接放在连接池中,以供调用.听说clone有深层clone和浅层clone之分,不知道如何区分及如何实现? 望请赐教!!!
错误:clone有深层clone和浅层clone之分 正确:clone有"影子clone"和"深度clone"之分。Clone讲解:
http://www-900.ibm.com/developerWorks/cn/java/l-jpointer/index.shtml
你做的是100000个数据库连接的测试还是取100000个数据的连接的测试?
改用odbc连接,执行速度就好多了,象正常一样。