Springboot2.0以后默认数据库连接池选择了Hikari(性能高)开源地址:https://github.com/brettwooldridge/HikariCP 里面有技术文档

性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 ,可以参考性能对比

https://blog.csdn.net/qq_31125793/article/details/51241943

本文介绍配置默认的hikari,对比线程池大小设置的运行结果。

上代码。

package com.figo.master.service;import java.util.UUID;
import java.util.concurrent.CountDownLatch;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import com.alibaba.fastjson.JSONObject;
import com.figo.master.service.impl.OrderServiceImpl;@RunWith(SpringRunner.class)
@SpringBootTest
public class DbConnectionPoolTest {@Autowiredprivate OrderServiceImpl orderService;int orderTime = 1000;int time = 10;// 循环10次long totalConsumeTime = 0;// 总耗时时间@Testpublic void dbConnPoolTest() throws Exception {for (int i = 0; i < time; i++) {CountDownLatch cdlTime = new CountDownLatch(orderTime);CountDownLatch cdl = new CountDownLatch(1);Long begin = System.currentTimeMillis();for (int a = 0; a < orderTime; a++) {// 生成订单信息Thread thread = new Thread(new OrderRun(cdl,cdlTime));thread.start();}cdl.countDown();cdlTime.await();Long end = System.currentTimeMillis();totalConsumeTime = totalConsumeTime + (end - begin);System.out.println(orderTime + "笔订单,总耗时=" + ((end - begin) / 1000) + "秒");}System.out.println(time * orderTime + "笔订单,总耗时=" + (totalConsumeTime / 1000) + "秒");// 单元测试不支持多线程,需要sleepThread.sleep(300000);}public class OrderRun implements Runnable {CountDownLatch cdlNew;CountDownLatch cdlTimeNew;public OrderRun(CountDownLatch cdl,CountDownLatch cdlTime) {this.cdlNew = cdl;this.cdlTimeNew=cdlTime;}@Overridepublic void run() {try {cdlNew.await();} catch (InterruptedException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}JSONObject orderinfo = new JSONObject();Long timeStamp = System.currentTimeMillis();String uuidString = UUID.randomUUID().toString();orderinfo.put("order_id", timeStamp + uuidString);orderinfo.put("user_id", timeStamp + uuidString);orderinfo.put("good_id", timeStamp + uuidString);try {orderService.createOrder(orderinfo);cdlTimeNew.countDown();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}

数据库写订单,跑了10次,每次并发1000笔,数据库连接池属性如下:

#datasource

spring.datasource.url=jdbc:mysql://192.160.0.12:3306/master?useSSL=false

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#20210718配置连接池

# Hikari will use the above plus the following to setup connection pooling

spring.datasource.type=com.zaxxer.hikari.HikariDataSource

spring.datasource.hikari.minimum-idle=2

spring.datasource.hikari.maximum-pool-size=20

spring.datasource.hikari.auto-commit=true

spring.datasource.hikari.idle-timeout=30000

spring.datasource.hikari.pool-name=DatebookHikariCP

spring.datasource.hikari.max-lifetime=1800000

spring.datasource.hikari.connection-timeout=30000

spring.datasource.hikari.connection-test-query=SELECT 1

试验发现spring.datasource.hikari.maximum-pool-size=10,耗时24秒,设置为20耗时12秒,另外如果把hikari相关的属性删除,发现springboot会默认安排连接池大小,我试验下来,会安排10个左右,不会说1000个并发,就创建1000个连接,所以建议还是根据应用程序服务器和数据库服务器性能,进行hikari属性的配置。

springboot配置数据库连接池hikari相关推荐

  1. SpringBoot默认数据库连接池Hikari

    Hikari是一款非常强大,高效,并且号称"史上最快连接池".由于其性能方面比较好,并且在springboot2.0之后,采用的默认数据库连接池就是Hikari,在引用parent ...

  2. springboot默认数据源如何设置连接数_Spring Boot系列之配置数据库连接池

    在实际的应用开发中,与数据库交互通常使用数据库连接池来重用Connection对象,减少资源消耗. Spring Boot 的数据源是自动配置的.在 Spring Boot 2.2.1 版本中,有几种 ...

  3. SpringBoot的数据库连接池

    一.前言 开发web项目,我们肯定会和数据库打交道,因此就会涉及到数据库链接的问题.在以前我们开发传统的SSM结构的项目时进行数据库链接都是通过JDBC进行数据链接,我们每和数据库打一次交道都需要先获 ...

  4. springboot+dbcp数据库连接池

    springboot+dbcp数据库连接池 1,连接池配置文件 2,连接工具类 3,测试类测试连接 4,实际调用连接去同步数据 1,连接池配置文件 在resources目录下添加文件dbcp.prop ...

  5. eclipse mysql Xml配置_mysql8.0在eclipse中通过xml文件配置数据库连接池

    mysql8.0在eclipse中通过xml文件配置数据库连接池 1.关于Mysql8.0 2.数据库连接池(DBCP) 3.准备工作 4.配置context.xml 5.配置web.xml 6.调用 ...

  6. mysql配置数据库连接池_三种数据库连接池的配置

    三种数据库连接池的配置及使用(For JDBC) 连接池的优缺点 优点 使用连接池的最主要的优点是性能.创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的 ( 网络 ...

  7. 数据库连接池 ( 三 ) springboot默认连接池 Hikari

    3.Java常用连接池 3.0.常用连接池 在Java中开源的数据库连接池有以下几种 : 1.C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdb ...

  8. SpringBoot 默认数据库连接池 HikariCP

    目录 引言 1.问题描述 2.SpringBoot默认的数据库连接池 3.HikariCP是什么 4.测试依赖 5.配置文件 5.1.数据库连接参数 5.2.连接池数据基本参数 5.3.连接检查参数 ...

  9. SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)

    作者:大三的土狗 专栏:SpringBoot入门到精通 快速导航 前言 1.连接池介绍 2.HicariCP 1)导入坐标 2)修改配置 3)优势 3.Druid 1)导入坐标 2)修改配置 3)优势 ...

最新文章

  1. mesh threejs 属性_Threejs构建mesh
  2. Android 进阶自定义View(4)图表统计LineChartView曲线图的实现
  3. [leetcode]Divide Two Integers
  4. MATLAB编程练习题
  5. Java集合HashSet
  6. 解决Windows接收IPSEC(IKE)流量的问题
  7. 二叉树中任意两个节点的距离
  8. Spring Cloud Config入门(本地配置)
  9. java 正则表达式 Matcher
  10. MIND多兴趣召回实战(一)
  11. 内核kconfig语法及原理
  12. Ubuntu桌面生存指南:Linux 的哲学
  13. 【数学建模】CUMCM历年题分类
  14. java中的gc是什么意思的缩写_gc是什么意思(gc的缩写是什么意思)
  15. 【MATLAB】数值运算 ( 数值运算示例 | 三角函数 | 指数运算 | 对数运算 | 常用的数学公式对应函数 )
  16. Discuz采集之Discuz论坛采集全网文章采集伪原创发布方法(图文)
  17. HTML/CSS入门(1)
  18. 使用NLTK对文档进行分句
  19. ArcGIS 网络分析[2.3] 最近设施点
  20. 集肤效应、邻近效应、边缘效应、涡流损耗

热门文章

  1. 【Unity UI】实时得分等UI的显示
  2. element-ui 使用时遇到的一些坑
  3. 单细胞测序流程(一)简介与数据下载
  4. 史上最牛逼的导航网站(开源免费)
  5. 【转】js里的时间函数集
  6. Gitblit的搭建
  7. Linux防火墙原理
  8. git连接华为软件开发云
  9. VSTO开发入门教程[持续更新中......]
  10. 哇呼即时通讯软件与同行业开发软件对比有何不同?