MySQL连接池

连接池

什么是连接池

连接池,顾名思义就是存储连接的池子,本质是一种资源复用技术。
使用方和mysql创建了连接,单次操作之后并没有直接释放,而是临时保存起来,下次如果有请求过来直接再复用这个连接,节约连接创建的成本,提升流程处理的效率,这就是mysql连接池的意义。
注意,连接池不是在mysql服务那一侧的,是在mysql的客户端,也就是调用mysql的那一侧,比如你有一个服务
a,a访问mysql,a就是mysql的客户端,那么连接池就在a这一侧。

连接池的价值

连接池是实现连接复用的手段,和mysql交互时,每次需要建立一个连接,用完就会关掉,这就是短连接。如果在
高井发场景,反复建立连接的成本是很高的,所以我们可以使用长连接,即连接用完后先不关闭,放到一个池子里
等待复用,连接资源复用就是连接池的价值。

常见参数

连接池通过一系列参数控制了针对mysql的连接复用策路,一般是由客户端引擎实现,支持哪些参数也由客户端引擎决定,通常而言所有的客户端引擎都支持如下几个主要参数:

  1. 最大空闲连接数/连接池个数:表示连接池中最多有多少个空闲连接,某个连接做完事务之后暂的空闲,如果
    连接池中空闲连接数没有达到上限,即可放入连接池。该参数其实可以理解为一共可维护多少个长连接来节约
    连接建立的成本。
  2. 空闲时间:连接池中连接使用完毕后会等到新的请求到来,表明了连接池中的连接在空闲时能在池子里存活多
    久,如果长时间没有请求到来,说明请求量非常小,就需要释放掉连接来节省资源,等待多久,就是由该
    参数决定,个人的建议是通常情况下1s-10s就足够了。
  3. 最小连接数:连接池中最小空闲连接数,当连接数少于此值时,连接池会创建新的连接来进行补充,作用主要
    是保持连接池始终处于就绪状态,如果需要的长连接特别多,且请求是周期性的,比如晚上定时跑脚本触发的
    请求,可以考虑使用该参数。
  4. 初始化连接数:初始化连接数目,一般来说实际意义不大,由最小连接数补齐即可。

可以看到,最大空闲连接数以及最大空闲时间,这两个参数是最为核心的,最大空闲连接数决定了长连接的个数,
最大空闲时间则决定了长连接的持续性。

java常见连接池参数

  • maxactive 连接池中的最大连接个数,也就是我们一开始图里的'最大空闲连接数"
  • minevictableidletimemillis 连接在池中最小生存的时间,单位是毫秒,换句话说达到这个时间就可能被释放掉,其实本质就是"空闲时间"
  • maxwait 某个请求到达时,如果连接池满了,就会陷入等待,这个参数指定了最大等待多长时间,单位ms
  • timebetweenevictionrunsmillis 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  • initialSize 程序启动时,初始化连接池中的连接数量
  • minIdle 连接池中最小连接个数

在100以内,适当放大连接池个数,对性能影响明显,在100以上,放大收益不高了,通常100以内即可。

一个连接到达之时,如果发现druid连接池满了,是会等待有连接释放,他可以接盘,这里也有个最大等待时间,超过了等待时间也会有对应错误抛出,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值