hikaricp mysql_使用 HikariCP 数据源

概述

HikariCP是Spring Framework 5.0的默认 数据库连接池,这得益于他的高性能。但是如果配置不当,数据库连接池也可能因影响到系统性能。

重要参数

maximum-pool-size

minimum-idle

pool-name

auto-commit

idle-timeout

max-lifetime

connection-timeout

初始化过程和连接创建逻辑

当HikariCP初始化时候,会将添加连接到池中,直到达到minimum-idle的数量,此时保持这个状态。当有新的连接池请求时,HikariCP会返回一个connection的代理。当connection都处于使用状态时,若此时有新的连接池请求,HikariCP就会继续新建connection直到达到maximun-pool-size。

maximum-pool-size

池中最大连接数(包括空闲和正在使用的连接)。默认值是10,这个一般预估应用的最大连接数,后期根据监测得到一个最大值的一个平均值。要知道,最大连接并不是越多越好,一个connection会占用系统的带宽和存储。但是 当连接池没有空闲连接并且已经到达最大值,新来的连接池请求(HikariPool#getConnection)会被阻塞直到connectionTimeout(毫秒),超时后便抛出SQLException。

minimum-idle

池中最小空闲连接数量。默认值10,小于池中最大连接数,一般根据系统大部分情况下的数据库连接情况取一个平均值。Hikari会尽可能、尽快地将空闲连接数维持在这个数量上。如果为了获得最佳性能和对峰值需求的响应能力,我们也不妨让他和最大连接数保持一致,使得HikariCP成为一个固定大小的数据库连接池。

pool-name

连接池的名字。一般会出现在日志和JMX控制台中。默认值:auto-genenrated。建议取一个合适的名字,便于监控。

auto-commit

是否自动提交池中返回的连接。默认值为true。一般是有必要自动提交上一个连接中的事物的。如果为false,那么就需要应用层手动提交事物。

idle-timeout

空闲时间。仅在minimum-idle小于maximum-poop-size的时候才会起作用。默认值10分钟。根据应用实际情况做调整,对于一些间歇性流量达到峰值的应用,一般需要考虑设置的比间歇时间更大,防止创建数据库连接拖慢了应用速度。

max-lifetime

连接池中连接的最大生命周期。当连接一致处于闲置状态时,数据库可能会主动断开连接。为了防止大量的同一时间处于空闲连接因为数据库方的闲置超时策略断开连接(可以理解为连接雪崩),一般将这个值设置的比数据库的“闲置超时时间”小几秒,以便这些连接断开后,HikariCP能迅速的创建新一轮的连接。

connection-timeout

连接超时时间。默认值为30s,可以接收的最小超时时间为250ms。但是连接池请求也可以自定义超时时间(com.zaxxer.hikari.pool.HikariPool#getConnection(long))。

#

# 配置数据源相关 使用 HikariCP 数据源

#

############################################################

# 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒

spring.datasource.hikari.connection-timeout=30000# 最小连接数

spring.datasource.hikari.minimum-idle=5# 最大连接数

spring.datasource.hikari.maximum-pool-size=15# 自动提交

spring.datasource.hikari.auto-commit=true# 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟

spring.datasource.hikari.idle-timeout=600000# 连接池名字

spring.datasource.hikari.pool-name=DatebookHikariCP

# 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒,参考MySQL wait_timeout参数(show variables like‘%timeout%‘;) -->spring.datasource.hikari.max-lifetime=28740000spring.datasource.hikari.connection-test-query=SELECT 1

原文链接:https://blog.csdn.net/ling_76539446/article/details/102637024

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

return两个返回值_异步函数的两个视角

我们来一起看一下两个程序员之间的故事。以下示例代码是用Scala写的,不过本文所讲的话题并不仅限于Scala,任何有Future/Promise支持的语言都是适用的。下面这个wiki页面罗列了各个有Future/Promise支持的语言,已经涵盖了大多数的常用语言。Fu…

python怎么控制速度_如何控制python的ThreadPoolExecutor的吞吐量速度?

我使用python的concurrent.futuresThreadPoolExecutor启动异步任务。按照this方法,我使用tqdm进度条监视异步调用的进度。在我的代码如下所示:with concurrent.futures.ThreadPoolExecutor(max_workers n_jobs) as executor:future_to_url {executor.s…

mysql57win10安装配置_Win10 OS安装(配置)MySQL 5.7(解压版)

Win10 OS安装(配置)MySQL 5.7(解压版)下载及解压文件名:mysql-5.7.27-win32.zipzip是解压版,msi是安装版,本教程仅说明zip格式的配置方法。解压(假设解压后根路径为D:\ide\mysql-5.7.27-win32)相关截图添加环境系统变量path 增加D:\ide\mysql…

mysql数据库更新数据库语句_MySQL数据库之UPDATE更新语句精解

UPDATE和REPLACE基本类似,但是它们之间有两点不同。1. UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。2. UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复记录时就将这条记录彻底删除…

ubuntu安装python编译器_Ubuntu中安装VIM编辑器

Ubuntu安装好以后,默认是安装使用nano编辑器。不过这对于用惯了vim的人可能会有些不习惯。好在Ubuntu下安装vim还是比较简单的,使用如下命令即可:sudoapt-get install vim(apt-get install vim-full这下就好了 在输入 :syntax on 或者把/etc/…

pep8 python 编码规范_如何用好python编码规范,写一手漂亮的代码

前一段时间在编写python 代码的时候编辑器中一直在提示规范问题,因为强迫症的原因,我决定遵循python 的编码规范去编码,然后把需要注意的点记录下来, 帮助自己和大家一起成长。这是我的main.py文件中的一部分代码,经过…

MySQL故障检测_检测MySQL的表的故障的方法

表的故障检测和修正的一般过程如下:检查出错的表。如果该表检查通过,则完成任务,否则必须修复出错的数据库表。在开始修复之前对表文件进行拷贝,以保证数据的安全。开始修复数据库表。如果修复失败,从数据库的备份或更…

mysql约束_Mysql约束条件

约束条件1约束条件约束是一种限制,通过对表中的数据做出限制,来确保表中数据的完整性,唯一性默认约束CREATE TABLE tb(id INT DEFAULT a ,name VARCHAR(20));插入数据的时候,如果没有明确为字段赋值,则自动赋予默认值在…

mysql导入greenplum_greenPlum中通过gpfdist导入文本数据到数据库表中

1.python版本要求2.4.4以上[roottest install]# pythonPython 2.6.2 (r262:71600, May 14 2009, 10:46:21)[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2Type "help", "copyright", "credits" or "license" for more informatio…

解决方案和项目的关系_项目经理入门知识系列之《项目团队的职责分工》

项目团队的组织结构组织结构项目经理职责整合制定项目计划所需的活动。整合执行项目计划所需的活动。整合进行范围变更所需的活动。1、目经理负责对横跨多个职能线的活动进行协调和整合。整合管理2、项目经理核心技能---沟通能力(因为他的权力太少了)如果一个人有良好的沟通与人…

python小车行驶路线图_基于opencv-Python小车循线学习笔记

基于opencv-Python小车循线学习笔记加入摄像头模块,让小车实现自动循迹行驶思路为:摄像头读取图像,进行二值化,将白色的赛道凸显出来选择下方的一行像素,黑色为0,白色为255找到白色值的中点目标中点与标准中…

python 字符串大小写转换 其它不变_python字符串大小写如何转换

平常开发过程中对字符串的一些操作:#字母大小写转换#首字母转大写#去除字符串中特殊字符(如:_,.,,,;),然后再把去除后的字符串连接起来#去除hello_for_our_world中的_,并且把从第一个_以后的单词首字母大写…

java读取文件夹_Java读取某个文件夹下的所有文件(支持多级文件夹)

packagecom.vocy.water.batch;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.File;public classCopyOfReadFile {publicCopyOfReadFile() {}/*** 读取某个文件夹下的所有文件(支持多级文件夹)*/public static boolean readfile(String filepat…

武汉大学信息管理学院java上机考试_java上机试题

展开全部import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Main extends JFrame implements ActionListener{LabledText upperBase new LabledText("上底:"),62616964757a686964616fe59b9ee7ad9431333337373561lowerBase …

python中cmd全称_【转】Python中执行cmd的三种方式

原文链接:http://blog.csdn.net/menglei8625/article/details/7494094目前我使用到的python中执行cmd的方式有三种:1. 使用os.system("cmd")这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息。使用前需要im…

数据库字段 到类 java bean_将数据库中表的字段自动转换为javaBean实体类

具体代码如下:package param;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.Resul…

el-drawer点击的时候为什么有边框_剪映教学之视频拍摄加剪辑【一】:出视频上下黑色边框模糊效果,视频广告配音...

抖音小视频已经成为风靡全国的一个app了,很多人都喜欢看抖音来打发时间,而经常看小视频的应该都见到过这种现象,就是有一些小视频我们在观看的时候,发现这个小视频的上下都有黑色边框或者模糊的效果,实际这都是一些拍摄…

java swt 下拉列表_求助:SWT 下拉列表

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼public class HelloWorldCombo {//下拉列表项 private static final String[] ITEMS { "Alpha", "Bravo", "Charlie", "Delta","Echo", "Foxtrot", "Golf"…

python html转换为普通文本_将HTML表转换为可读的纯文本的Python解决方案

用这个怎么样:但是,使用collections.OrderedDict()而不是简单字典来保持顺序。有了字典之后,很容易从中获取和格式化文本:使用Colt 45溶液:import xml.etree.ElementTreeimport collectionss """\Heig…

java synchronized 静态_Java之Synchronized修饰实例方法和静态方法

一、Synchronized修饰实例方法,实际上是对调用该方法的对象加锁,俗称“对象锁”情况一:​同一个对象在两个线程中分别访问该对象的两个同步实例方法结果:会产生互斥​原因:因为锁针对的是对象,当对象调用​…