连接池
为什么用连接池?
数据库连接是非常占用资源的,尤其是在高并发的情况下,如果我们每次都去建立数据库连接就会有性能问题,也会影响一个应用的程序的延展性,针对这个问题,连接池出现了。
连接池的原理?
数据库连接池负责分配、管理、释放连接,他保证应用程序可以重复使用同一个连接而不需要每次都创建数据库连接,如果数据库连接时设置的最长数据库连接时间会自动释放链接,为了避免因为没有释放链接而导致的数据库连接遗漏,因此,数据库连接池可以明显 提高数据看连接性能。
数据库连接池在初始化的时候会放入一定数量的连接,这个连接是由最小连接数决定的,就算没有用到这些连接,这个连接也会在连接池中,如果连接数超过最大连接数,那么会放入队列中等待释放连接在使用。
连接池的优点?
- 资源重用
- 更快的系统反应速度
- 新的分配方式
- 统一的连接管理,避免数据库连接泄漏
C3p0和DBCP?
C3P0是hibernate3.0默认一个自带数据库连接池;
DBCP是Apache开发的数据库连接池
我们对这两种连接池进行压力测试对比,发现在并发300个用以下时,DBCP比C3P0平均时间快1秒左右,但是并发在400个用户是,两者是差不多的。
速度上虽然DBCP比c3p0快些,但是他有BUG;放建立的数据库连接,因为某种原因断掉后,DBCP将不会在重新创建新的连接,导致必须重启Tomcat才能解决,DBCP的bug使我们决定采用C3P0作为数据库连接池。