数据库连接池的工作机制是怎样的
原文地址:https://chayedan.site/index.php/archives/149/
数据库连接是一种非常珍贵且有限的资源,尤其在多用户的网络应用环境中更是如此。对数据库连接管理的好坏会直接影响整个系统的性能:一是建立与数据库的连接是一个耗时的操作,在页面应用中,如果每次用户的请求都需要建立新的数据库连接,那么响应时间就会很长,会严重影响用户的体验;二是数据库的连接个数是有限制的,如果管理不好,用户经常建立与数据库的连接却忘记释放,运行时间久了,数据库的连接资源就会耗尽,当再有新的用户需要访问数据库时,就需要等待很长一段时间,直到有用户释放连接资源才能访问数据,这对系统的可用性有着严重的影响。因此,管理好数据库的连接资源对应用系统尤其是页面应用系统是非常重要的。
数据库连接池负责分配、管理并释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立-一个新的数据库连接,同时,它还负责释放空闲时间超过最大空闲时间的数据库连接,避免因为没有释放数据库连接而引起的数据库连接遗漏。
在J2EE中,服务器在启动时会创建一定数量的池连接,并一直维持不少于此数目的连接池。当客户程序需要访问数据库时,就可以直接从池中获取与数据库的连接(获取一个空闲的连接),而不用去创建一个新的连接,同时将该连接标记为忙状态。当使用完毕后再把该连接标记为空闲状态,这样其他用户就可以使用这个连接了。如果当前没有空闲的连接,那么服务器就会根据配置参数在池中创建一定数量的连接。采用这种方法对数据库连接进行管理后可以大幅缩短用户的响应时间,提高运行效率。另一方面,为了提高数据库操作的性能,数据库连接池会释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。
常用的数据库连接池
阿里巴巴 druid https://mvnrepository.com/artifact/com.alibaba/druid
hikari https://mvnrepository.com/artifact/com.zaxxer/HikariCP