C3P0连接池小记

本文介绍了数据库连接池的概念,强调了手动释放连接的重要性,并详细讨论了C3P0连接池存在的两个问题:1. 连接可能并未真正释放,可能导致异常;2. 连接释放后,程序关闭,连接可能仍存活。提出了增大连接数、控制并发量、设置maxStatements为0等解决方案,并提醒注意数据库连接数监控和使用destroy方法彻底释放连接。
摘要由CSDN通过智能技术生成

C3P0连接池小记

之前虽然有时候用到数据库连接池,但是一直没有关注过细节,在最近做的一个项目中,遇到了一些问题,这里总结下,不足之处还望指出。

数据库连接池的概念

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。(来自百毒~)

关于需不需要手动释放连接

总的来说,看情况,但是最好自己控制。

之前使用连接池的时候有个误区,以为连接池里的连接拿来不用管,直接每次使用的时候poll.getConnection()就可以了,而没有去释放或者说还给连接池。在一般的小应用中,看不出来问题,但当连接数达到一定的数量时,便会出现问题,比如不需要的连接继续保持着,需要用到连接的进程获取不到连接等等。当然也不排除有些数据库连接池支持通过配置来回收连接,比如配置个最大闲置时间,当时间到了,即使你在程序中没有手动关闭,也会回收当前连接。

但是这样会有个问题。比如配置的连接池最大连接数为30,此时我有60个线程需要使用数据库连接。假设我每个连接只做了查询,可能只需要1s,也就是说,我如果手动关闭,大概每个连接在1s多久可以还给连接池了,这样即使60个线程,也就是有些线程需要等一小会的事情,只要等待超时时间和程序配置合理,也不会有什么大问题。但是如果我没有手动关闭,而配置的自动回收连接的时间又很长&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值