数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个。
优点
- 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。
- 资源重用,避免了频繁的创建、释放连接引起的大量性能开销,能明显提高对数据库操作的性能。
- 对于业务请求而言,直接利用创建好的连接,避免了数据库连接初始化和释放的时间开销,缩短了系统响应时间。
工作机制
-
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。
-
连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
-
数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:
1 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
2.最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
3.如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
实现原理
数据连接池是把数据库连接放到中间服务器上,比如tomcat上,那么相当于每次你操作数据库的时候就不需要再"连接"到数据库再进行相关操作,而是直接操作服务器上的"连接池"。
工作流程
最大维持连接数是10(没有请求时可以存在的连接数,即MinPoolSize= 10);
最大连接数是20(MaxPoolSize = 100);
最大等待时间是10000ms(空闲连接等待10000ms后释放)。
- 最开始在连接池中有10个连接(最大连接数),当有用户申请连接时,其将一个连接分配用户,直到连接池中的10个连接全都分配出去。
- 当第11个用户申请连接时,它将创建第11个连接并分配给该用户,直到把第20个连接(最大连接数)分配给第20个用户。
- 当第21个用户申请连接时,它需要等待,直到前面的20个用户中某一个断开了连接,才会把那个连接分配给第21个用户。
- 当用户断开连接时(第11至20个连接),该连接不会立刻被释放而是需要等待10000毫秒(最大等待时间),才被释放,当没有用户连接时,连接池内还保持10个连接。
【参考文档】
MySql数据库连接池

本文深入解析数据库连接池的工作原理和优势,包括资源重用、性能提升及系统响应时间缩短。探讨连接池的初始化、最大和最小连接数设置,以及如何避免数据库连接遗漏,确保高效的数据操作。
7278

被折叠的 条评论
为什么被折叠?



