JAVA常用数据库连接池

1.连接池

        池化思想是在计算机软件研发中常用的一种思想;该思想为建立一组序列,用于存放各种数据结构,从而对各种数据结构进行管理。池化的优点为:让数据结构有序化和处于控制,从而方便管理。池化本质是一种数学思想,常见的数学池如:整数池、小数池、有理数池、负数池。而在计算机工程中常见的池为:连接池、内存池、线程池。

       连接池是一种思想和技术:把整个数据库连接放入池内;当访问数据库时,如果连接存在,则直接采用原来的数据库连接;同时,新连接会存在连接池内,方便服用。

       连接池带来了数据库访问的极大的效率提升:因为访问数据库一般用TCP连接,TCP建立连接会用三次握手;而连接池会减少很多不必要的重复连接,会极大提升数据库的访问效率。

        池化在很大程度上对我们认识世界和工程管理带来了极大的便利。但池化也会引入麻烦,当数据或数据结构突破池的范围时,会造成整个程序的崩溃,并带来极大的危害。人类认识史上的池的崩溃例子为:人们刚开始只认识10个指头所能标记的数,当数字超过10时,很多小孩直接不再会算数。数学史上的一个池的崩溃为:毕达哥拉斯学派弟子希伯斯发现了无理数根 2,直接造成了数学王国的一段长期的危机。而在计算机工程上,内存池、连接池和线程池的崩溃,则可能造成巨大的损失。        

2.JAVA常用连接池比较

       JAVA常用的连接池有dbcp、c3p0、tomcat-jdbc、druid和HiKariCP。其中,dbcp、c3p0、tomcat-jdbc是第一代连接池,druid和HiKariCP是第二代连接池。不同连接池对比如下:

功能 dbcp druid c3p0 tomcat-jdbc HikariCP
是否支持PSCache
监控 jmx jmx/log/http jmx,log jmx jmx
扩展性
sql拦截及解析 支持
代码 简单 中等 复杂 简单 简单
更新时间 2015.8.6 2015.10.10  2015.12.09   2015.12.3
特点 依赖于common-pool 阿里开源,功能全面 历史久远,代码逻辑复杂,且不易维护   优化力度大,功能简单,起源于boneCP
连接池管理 LinkedBlockingDeque 数组   FairBlockingQueue threadlocal+CopyOnWriteArrayList

       目前,大部分软件工程已经开始用Druid和HiKariCP。Druid 称最好的JAVA连接池,但这种“”体现在功能强大,如进行监控,比较性能的话,还是HiKariCP。有兴趣的可以参考这篇博客:《数据库连接池选型 Druid vs HikariCP》(https://juejin.cn/post/6885974851949953031)

3.SpringBoot的默认连接池HiKariCP

       目前SpringBoot中默认的连接池为HiKariCP,从SpringBoot2.0开始,不用配置即可添加HiKari CP。

       可以在默认配置文件添加配置文件,配置样例如下:

4.设置样例

      可以在SpringBoot程序中动态设置HiKariCP,样例如下:

     

5.参考文献

[1]主流数据库连接池性能比较 hikari druid c3p0 dbcp jdbc,https://www.cnblogs.com/barrywxx/p/8506571.html

[2]主流Java数据库连接池比较及前瞻,https://www.jianshu.com/p/b9b98ac3e010

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月21日
下一篇 2021年1月21日

相关推荐