原创

jdbc连接池分析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jnshu_it/article/details/85992101

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【jdbc连接池分析 】

视频链接:

PPT链接:

请点这里

https://ptteng.github.io/PPT/PPT-java/JAVA-task1-jdbcpool.html#/


1.背景介绍

使用jdbc的时候,每操作一次都需要获取连接(创建)用完之后把连接释放掉了(销毁),通过连接池来优化curd操作。

连接池就像一个大池子一旦初始化就放入很多很多的链接,用的时候你来这个大池子里取,用完之后你再归还给我。这个就是我们的连接池。

每一次web请求都要建立一次数据库连接。

 

比如双十一的时候我每次只创建一个链接,好几亿人剁手,那服务器可能一定会崩掉。

 

所以这就体现了连接池的必要性,就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可

 

2.知识剖析

1、并发问题

为了使连接管理服务具有最大的通用性,必须考虑多线程环境

2、多数据库服务器和多用户 对于大型的企业级应用,常常需要同时连接不同的数据库(如连接oracle和sybase)。设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。

3,连接池的分配与释放

连接池的分配与释放,对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。

4,连接池的配置与维护

连接池中到底应该放置多少连接,才能使系统的性能最佳?系统可采取设置最小连接数(minconn)和最大连接数(maxconn)来控制连接池中的连接。最小连接数是系统启动时连接池所创建的连接数。如果创建过多,则系统启动就慢,但创建后系统的响应速度会很快


3.常见问题


4.解决方案

实际开发中有成熟的开源连接池供我们使用

DBCP(tomcat使用)

dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。

这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml

一般情况下。在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性有所下降,此外不提供连接池监控

C3P0(一定要懂!)(spring和hibernate)

c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

这个连接池的配置参见附件压缩包中的:c3p0.xml。

一般情况下。在具体项目应用中,发现此连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,此外不提供连接池监控。


5.编码实战

 

jdbc连接池分析_腾讯视频

实际开发中有成熟的开源连接池供我们使用

DBCP(tomcat使用)

dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。

这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml

一般情况下。在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性有所下降,此外不提供连接池监控

C3P0(一定要懂!)(spring和hibernate)

c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

这个连接池的配置参见附件压缩包中的:c3p0.xml。

一般情况下。在具体项目应用中,发现此连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,此外不提供连接池监控。

6,扩展思考

第三种连接池Druid

阿里出品,淘宝和支付宝专用数据库连接池,

但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,

一系列内置的JDBC组件库,一个SQL Parser。支持所有JDBC兼容的数据库,

包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。

7,问题思考

提问:连接池是否会自动关闭?

答案是需要设置的。比如我们的DBCP的连接池图中

图中便是对连接池关闭的设置。

8,参考文献

http://blog.csdn.net/shuaihj/article/details/14223015

 

9,更多讨论

视频链接:

https://v.qq.com/x/page/d0567vhdanq.html

PPT链接:
https://ptteng.github.io/PPT/PPT-java/JAVA-task1-jdbcpool.html#/8

 

展开阅读全文

没有更多推荐了,返回首页