数据库连接池的close方法

最近在做一个项目,需要对多种异构数据系统的查询方法做统一封装,发现对于数据库的访问出现了exceed max connect limit问题,经过追查发现对于数据库连接池的close方法理解存在问题。

数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。

原先query的代码是这样写的:

conn = tddlClient.getConnection();

rs = conn.executeQuery();

rs.close();

之前错误的理解是数据库会预先建立好一堆连接,getConnection会从连接池里取出来一条空闲的连接,然后会有一个超时时间,过了超时时间自动归还连接。而conn.close()方法会将连接断掉,为了性能考虑所以不应该调用。

实际上出了问题查阅资料才知道,conn.close()是将连接归还到连接池里,而并非断掉连接。如果不去手动close而等超时,很容易就会出现连接池备用光的情况。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容