目录
连接池概念:
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
Web应用程序必须首先和数据库建立连接,即得到Conection对象,才能进入后续的操作,例如查询、更新、添加记录等操作。和数据库建立连接是属于比较耗时的操作,连接池的思想是,由一个管理者,例如Tomcat服务器,事先建立好若干个连接,即创建若干个Connection对象放在一起(存放在一个实现DataSource接口的对象中),称作一个连接池。
连接池原理:
类似于操作系统中的缓冲区概念;
1.先启动若干数量的线程,并让这些线程都处于睡眠状态;
2.当客户有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端发来的请求;
3.当这个请求被处理完成之后,线程恢复睡眠状态。
使用连接池的目的:
尽可能多的重用消耗内存的资源,节省内存;提高了服务器地服务效率,能够支持更多的客户服务;提高程序的运行效率;并且它可以通过自身的管理机制来监视数据库连接的数量、使用情况。
1.资源重用;
2.更快的系统反应速度;
3.新的分配方式;
4.统一的连接管理,避免数据库连接泄露。
常用的数据库连接池:
C3P0,Proxool,DBCP,DDConnectionBroker,DBPool,XAPool,Primrose,Smart Pool,tomcat,hikari。
连接池使用步骤:
1.建立数据库连接池对象(服务器启动);
2.按照指定的参数创建初始数量的数据库连接(空闲的连接数);
3.对于一个数据库访问请求,直接从连接池中得到一个连接;(如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大活跃连接数,创建一个新的数据库连接);
4.存取数据库;
5.关闭数据库,释放所有数据库连接;(此时的关闭数据库连接,并非真正的关闭,而是将它放入空闲队列中,如实际空闲连接数大于初始空闲连接数则释放连接(返回第二步继续操作));
6.释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。