springboot配置数据库连接池hikari
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相关推荐
- SpringBoot默认数据库连接池Hikari
Hikari是一款非常强大,高效,并且号称"史上最快连接池".由于其性能方面比较好,并且在springboot2.0之后,采用的默认数据库连接池就是Hikari,在引用parent ...
- springboot默认数据源如何设置连接数_Spring Boot系列之配置数据库连接池
在实际的应用开发中,与数据库交互通常使用数据库连接池来重用Connection对象,减少资源消耗. Spring Boot 的数据源是自动配置的.在 Spring Boot 2.2.1 版本中,有几种 ...
- SpringBoot的数据库连接池
一.前言 开发web项目,我们肯定会和数据库打交道,因此就会涉及到数据库链接的问题.在以前我们开发传统的SSM结构的项目时进行数据库链接都是通过JDBC进行数据链接,我们每和数据库打一次交道都需要先获 ...
- springboot+dbcp数据库连接池
springboot+dbcp数据库连接池 1,连接池配置文件 2,连接工具类 3,测试类测试连接 4,实际调用连接去同步数据 1,连接池配置文件 在resources目录下添加文件dbcp.prop ...
- eclipse mysql Xml配置_mysql8.0在eclipse中通过xml文件配置数据库连接池
mysql8.0在eclipse中通过xml文件配置数据库连接池 1.关于Mysql8.0 2.数据库连接池(DBCP) 3.准备工作 4.配置context.xml 5.配置web.xml 6.调用 ...
- mysql配置数据库连接池_三种数据库连接池的配置
三种数据库连接池的配置及使用(For JDBC) 连接池的优缺点 优点 使用连接池的最主要的优点是性能.创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的 ( 网络 ...
- 数据库连接池 ( 三 ) springboot默认连接池 Hikari
3.Java常用连接池 3.0.常用连接池 在Java中开源的数据库连接池有以下几种 : 1.C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdb ...
- SpringBoot 默认数据库连接池 HikariCP
目录 引言 1.问题描述 2.SpringBoot默认的数据库连接池 3.HikariCP是什么 4.测试依赖 5.配置文件 5.1.数据库连接参数 5.2.连接池数据基本参数 5.3.连接检查参数 ...
- SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)
作者:大三的土狗 专栏:SpringBoot入门到精通 快速导航 前言 1.连接池介绍 2.HicariCP 1)导入坐标 2)修改配置 3)优势 3.Druid 1)导入坐标 2)修改配置 3)优势 ...
最新文章
- mesh threejs 属性_Threejs构建mesh
- Android 进阶自定义View(4)图表统计LineChartView曲线图的实现
- [leetcode]Divide Two Integers
- MATLAB编程练习题
- Java集合HashSet
- 解决Windows接收IPSEC(IKE)流量的问题
- 二叉树中任意两个节点的距离
- Spring Cloud Config入门(本地配置)
- java 正则表达式 Matcher
- MIND多兴趣召回实战(一)
- 内核kconfig语法及原理
- Ubuntu桌面生存指南:Linux 的哲学
- 【数学建模】CUMCM历年题分类
- java中的gc是什么意思的缩写_gc是什么意思(gc的缩写是什么意思)
- 【MATLAB】数值运算 ( 数值运算示例 | 三角函数 | 指数运算 | 对数运算 | 常用的数学公式对应函数 )
- Discuz采集之Discuz论坛采集全网文章采集伪原创发布方法(图文)
- HTML/CSS入门(1)
- 使用NLTK对文档进行分句
- ArcGIS 网络分析[2.3] 最近设施点
- 集肤效应、邻近效应、边缘效应、涡流损耗