连接池的工作原理连接池技术的核心思想是连接重用。通过建立一个数据库连接池和一套连接使用、分配和管理策略,可以高效、安全地重用这个连接池中的连接,避免频繁建立和关闭数据库连接的开销。
连接池的工作原理主要由三部分组成,即连接池的建立、连接池中连接使用的管理和连接池的关闭。
一、连接池的建立
一般在系统初始化时,会根据系统配置建立连接池,在池中创建几个连接对象,以便使用时从连接池中获取。连接池中的连接不能随意创建和关闭,避免了任意建立和关闭连接带来的系统开销。Java提供了很多可以轻松构建连接池的容器类,比如Vector和Stack。
二、连接池的管理
连接池管理策略是连接池机制的核心,连接池中连接的分配和释放对系统的性能有很大影响。其管理策略是:
当客户请求数据库连接时,首先检查连接池中是否有空闲连接,如果有空闲连接,则将该连接分配给客户使用;如果没有空闲连接,则检查当前打开的连接数量是否达到最大数量,如果没有,则重新创建到请求客户的连接;如果达到,就按照设置的最大等待时间等待,如果超过最大等待时间,就向客户抛出异常。当客户端释放一个数据库连接时,首先判断该连接的引用次数是否超过规定值,如果是,则从连接池中删除该连接,否则为其他客户端保留。
该策略保证了数据库连接的有效重用,避免了频繁的连接建立和释放带来的系统资源开销。
编号三、关闭连接池
当应用程序退出时,连接池中的所有连接都被关闭,与连接池相关的资源被释放,这与创建正好相反。
连接池的运行原理在实际应用开发中,尤其是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,那么每一个数据访问请求都要经历建立数据库连接、打开数据库、访问数据和关闭数据库连接的步骤,连接和打开数据库是一项耗费资源和时间的工作。如果这种数据库操作频繁发生,系统的性能必然会急剧下降,甚至导致系统崩溃。数据库连接池技术是解决这一问题最常用的方法。在很多应用服务器(如Weblogic、WebSphere、JBoss)中,基本都提供了这种技术,不需要自己编程。但是,深入了解这项技术是非常必要的。
数据库连接池技术的思想非常简单。数据库连接作为对象存储在Vector对象中。一旦建立了数据库连接,不同的数据库访问请求就可以共享这些连接。这样,通过重用这些已建立的数据库连接,可以克服上述缺点,并且可以大大节省系统资源和时间。
数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。
(2)根据预先指定的参数,创建一个初始的数据库连接数(即空闲连接数)。
(3)对于数据库访问请求,直接从连接池中获取连接。如果数据库连接池对象中没有空闲连接,并且连接数没有达到最大值(即最大活动连接数),请创建一个新的数据库连接。
(4)访问数据库。
(5)关闭数据库,释放所有数据库连接(此时关闭数据库连接并不是真正关闭,而是将其放入空闲队列。如果空闲连接的实际数量大于空闲连接的初始数量,则释放该连接)。
(6)释放数据库连接池对象(在服务器停止和维护期间,释放数据库连接池对象并释放