想了一个晚上,用了一个早上完成编码 – 效率还是很高的嘛

项目地址: https://github.com/nutzam/nutzcp

很久之前,我也写过另外一个简单的连接池实现,这次我认真地实现了另一个实现,也就是现在这个

这个连接池,基于一些假设: 1. 数据库可接纳的总连接数是固定的 2. 使用者是自律的,总是显式调用commit()/rollback(),然后调用close()

不走寻常路: 1. 固定的连接池大小 2. 超过固定连接数后,不允许再创建新连接,除非旧连接被返还

为何要固定的连接池大小呢?! 以MySQL为例,server端可接纳的连接数是固件的,写在配置文件里面的,就是说,实际上server-client之间的可用连接数总数是稳定的,固定的,所以,维持一个固定大小的连接池比维持一个可变大小的连接池要简洁,更快,其实也更实用

**为什么不允许overflow(连接池里面已经没有空余连接,那就创建不受管理的连接)呢? ** 因为不应该由数据库告诉程序: 我是MySQL数据库服务器,我已经没有可用的新连接啦!! 客户端本身就能知道是否已经无法创建新连接,这样直接抛出异常,比服务器告知要快速得多

现在这个实现还是使用synchronized,但效率还是很不错的,使用这个实现,通过Nutz项目的TestAll完全没鸭梨!! 呵呵,心情好的时候再改为JDK5的lock吧

Be fun !!



blog comments powered by Disqus

Published

2011-09-18 14:41:17

Categories


Tags

Fork me on GitHub