5 数据库连接池
约 546 字大约 2 分钟
2025-04-05
一般来说,对于数据库操作都是在访问数据库的时候创建连接,访问完毕断开连接。但是如果在高并发情况下,有些需要频繁处理的操作就会消耗很多的资源和时间,比如:
- 建立通信连接的TCP三次握手
- 数据库服务器的连接认证
- 数据库服务器关闭连接时的资源回收
- 断开通信连接的TCP四次挥手
- 如果使用数据库连接池会减少这一部分的性能损耗。
设计
要实现以下功能:
- 连接池只需要一个实例,所以连接池类应该是一个单例模式的类
- 所有的数据库连接应该维护到一个安全的队列中 使用队列的目的是方便连接的添加和删除 所谓的安全指的是线程安全,也就是说需要使用互斥锁来保护队列数据的读写。
- 在需要的时候可以从连接池中得到一个或多个可用的数据库连接 如果有可用连接,直接取出 如果没有可用连接,阻塞等待一定时长然后再重试
- 如果队列中没有多余的可用连接,需要动态的创建新连接
- 如果队列中空闲的连接太多,需要动态的销毁一部分
- 数据库操作完毕,需要将连接归还到连接池中
java的接口
标准接口:DataSource 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口。 功能:获取连接
Connection getConnection()
Druid
Druid(德鲁伊) Druid连接池是阿里巴巴开源的数据库连接池项目 功能强大,性能优秀,是Java语言最好的数据库连接池之一
在使用之前需要在src目录下配置druid.properties
文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
username=root
password=1234
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000
贡献者
版权所有
版权归属:PinkDopeyBug