基于mysql的连接池_数据库连接池(基于MySQL数据库)

使用JDBC是怎么保证数据库客户端和数据库服务端进行连接的?

通过代码:

conn=DriverManager.getConnection(url, username, password);

JDBC通过这条代码方法的调用建立了一条客户端应用程序到后端数据库的物理连接。期间发生了大量的基于TCP的客户端与服务端的交互。

1f65223338531d4503243527479bb2c1.png

由于跨机器的网络传输是由较大的网络开销的,所以时间花销很大。

传统的多线程JDBC服务中,我们每进行一次服务都需要分配一个线程,每一个线程去建立一个数据库连接,当这条服务结束之后,该线程和该数据库连接都将被销毁。

当我们需要下一次数据库服务时,再次建立新的线程和数据库连接。

b35dc35a5383641802659b8d006af46e.png

这样每次在建立数据库连接上浪费了大量的时间,用户的相应时间变得很慢。

连接池的出现就是为了解决这个问题,连接池实现了数据库连接(connection对象)的复用,当一个线程处理完相应程序服务,随后不紧接着销毁数据库连接,而是把它交给下一个线程使用。这样就避免了多次建立数据库连接而浪费时间的问题出现。实现了从每个线程创建数据库连接到每个线程租用数据库连接的转变。

11491d496ba11c879d997688efb3bd70.png

MySQL数据库内部是怎么分配各种连接的?

在MySQL数据库中也存在着内存限制,当分配的数据库连接过多,会增加数据库内存的占用,加剧各种锁的冲突,占用数据库资源,甚至造成数据库崩溃。所以一般在MySQL数据库中设置最大连接数。

但是,为了保证不出现上述问题,我们可以在连接请求到达数据库之前进行限流,保证数据库资源的优化利用,效率至上。连接池就起到了这个作用:限制连接。

d01a169fba8eae2e5631aa7c87ba389a.png

连接池到底是什么?

连接池本质上就是一组java的jar包,介于java应用和JDBC数据库物理连接之间,帮助应用程序来管理数据库连接,通过连接池暴露的接口,应用程序可以获取JDBC连接,使用完后

将JDBC归还给连接池,供下一个线程使用。

2c68f9ce277368f191253f30e5dc87d5.png

在连接池中,数据库连接不足的时候,会自动创建连接;同时当空闲连接过多时也会自动销毁连接。

当多个线程同时访问时,连接池还提供了排队等待的功能。保证了应用程序有序地获取数据库连接。

连接池怎么使用?

以现在最受欢迎的JDCP连接池为例。

82e8aacc561c4204d310c375dca01ada.png

相关jar包下载地址:

其中,有两种jar版本,windows推荐下载.zip版

5204cff380ef6e6b21270698a09e6740.png

关于两版的差别,参考:

1)创建一个连接池对象:

因为JDCP的底层也是通过JDBC来实现的,所以我们需要告诉它相应的信息。

bec885c0d9c5244b0dd1f2ca1fbe3deb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值