background image
连接池管理策略是连接池机制的核心。当连接池建立后,如何对连接池中的连接进行管
理,解决好连接池内连接的分配和释放,对系统的性能有很大的影响。连接的合理分配、释
放可提高连接的复用,降低了系统建立新连接的开销,同时也加速了用户的访问速度。下面
介绍连接池中连接的分配、释放策略。
连接池的分配、释放策略对于有效复用连接非常重要,我们采用的方法是一个很有名的
设计模式:Reference Counting(引用记数)。该模式在复用资源方面应用的非常广泛,
把该方法运用到对于连接的分配释放上,为每一个数据库连接,保留一个引用记数,用来记
录该连接的使用者的个数。
具体实现方法如下:
当客户请求数据库连接时,首先查看连接池中是否有空闲连接(指当前没有分配出去的
连接)。如果存在空闲连接,则把连接分配给客户并作相应处理(即标记该连接为正在使用,
引用计数加 1)。如果没有空闲连接,则查看当前所开的连接数是不是已经达到 maxConn
(最大连接数),如果没达到就重新创建一个连接给请求的客户;如果达到就按设定的
maxWaitTime(最大等待时间)进行等待,如果等待 maxWaitTime 后仍没有空闲连接,
就抛出无空闲连接的异常给用户。
当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过就删
除该连接,并判断当前连接池内总的连接数是否小于 minConn(最小连接数),若小于就
将连接池充满;如果没超过就将该连接标记为开放状态,可供再次复用。可以看出正是这套
策略保证了数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源开销。
1.3 连接池的关闭