springboot 数据库连接池配置(hikari)

这篇具有很好参考价值的文章主要介绍了springboot 数据库连接池配置(hikari)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JBDC

        JABC是JAVA访问关系型数据库的标注API,它为各种关系型数据的访问提供统一的接口标准,然后,各个关系型数据库厂商按照JBDC的标准,提供能使JAVA访问的驱动包。一般情况下,在JAVA中执行一条SQL语句,需要以下几个步骤:

  1. 状态JDBC驱动程序
  2. 建立数据库连接
  3. 创建数据库操作对象
  4. 访问数据库,执行SQL语句
  5. 处理返回结果集
  6. 断开数据库连接

其中第2步的连接需经历一下步骤:

  1. 与数据建立TCP连接的三次握手
  2. 数据库账号密码认证的通信
  3. sql执行与返回的通信
  4. 关闭TCP连接的4次握手

        由此看出,执行一个sql的开销是比较大的,因此,为了节省资源提高效率,使用数据库连接池是很有必要的

数据库连接池

        顾名思义,数据库连接池就是存放很多数据库连接的池子。它的原理就是在系统初始化的时候创建一定数量的数据库连接并存放在池子中,当应用程序需要访问数据库时,直接从池子里面拿空闲连接使用,使用完成连接也不用关闭,给后续要访问数据库的线程继续使用。这样就能很大程度上节省了访问数据库的时间和重复建立连接的资源占用。数据库连接池有一下几个关键因素:

  • 最小连接数:限制数据库连接池保持数据连接的最小数量,如果应用访问数据的频率不是很高,将造成资源浪费。
  • 最大连接数:当同一时间应用向数据库连接池请求的数连接超过最小连接数,将新增一个请求,新增的连接空闲后不会马上释放,当超过设置的空闲时间后才会自动释放,当请求超过最大连接数时,进入等待队列,直到有空闲的连接。

hikari配置

        springboot默认使用的是hikari连接池,常用配置如下,参考地址HikariCP

属性名称 说明
autoCommit

控制从池返回的连接是否默认自动提交。

默认值:true

connectionTimeout

客户端向池子请求连接的超时时间,超出则抛出一个SQLException。

最小值:250毫秒。

默认值:30000毫秒

maximumPoolSize

控制池允许达到的最大大小,包括两者空闲和正在使用的连接。

基本上这个值将决定的最大数量到数据库后端的实际连接。当池达到此大小,并且没有空闲连接时可用时,对请求连接的调用将阻塞长达connectionTimeout的毫秒。

默认值:10

minimumIdle

控制HikariCP试图维护的空闲连接的最小数量。如果空闲连接数低于此值,并且池中的总连接数小maximumPoolSize,HikariCP将尽最大努力快速有效地添加额外的连接。然而,为了获得最大的性能和对峰值需求的响应,建议不要设置此值,而是允许HikariCP作为固定大小的连接池。

默认值:与maximumPoolSize相同

idleTimeout

控制连接在池中允许空闲的最长时间。该设置仅在minimumIdle小于maximumPoolSize时适用。一旦池达到最低空闲连接数,空闲连接将不会被弃用。无论连接是否作为空闲状态,其弃用时间都可能在+30秒的范围内变化,平均变化为+15秒。在超时时间之前,连接永远不会被弃用为空闲连接。如果将其设置为0,则表示不会从池中删除空闲连接。

最小允许值为10000毫秒(10秒)。

默认值为600000(10分钟)。

maxLifetime

控制连接池中连接的最长生命周期。使用中的连接永远不会被弃用,只有当它被关闭时才会被移除。针对每个连接,应用轻微的负面衰减,以避免连接池的大规模灭绝。

我们强烈建议设置此值,应该比数据库或基础设施强制实施的连接时间限制短几秒钟。如果将其设置为0,则表示没有最大生命周期(无限生命周期),当然还要考虑idleTimeout设置。

最小允许值为30000ms(30秒)。

默认值为1800000(30分钟)。

keepaliveTime

控制HikariCP尝试保持连接的频率,以防止连接因数据库或网络基础设施的超时而被关闭。该属性仅适用于空闲连接,keepaliveTime的值必须小于maxLifetime的值。

当给定连接需要进行“保活”操作时,该连接将从连接池中移除,执行“ping”操作,然后返回连接池。ping操作可以通过调用JDBC4的isValid()方法或执行connectionTestQuery来执行。离开连接池的时间应该通常为单个数字毫秒甚至是亚毫秒,因此应该几乎没有性能影响。

keepaliveTime属性的最小允许值为30000毫秒(30秒),但在几分钟的范围内设置值最理想。keepaliveTime的默认值为0,这意味着默认情况下禁用此功能。

connectionTestQuery

如果您的驱动程序支持JDBC4,我们强烈建议不要设置此属性。这是为了

不支持JDBC4 Connection.isValid() API的“遗留”驱动程序。这是一个查询

将在连接池提供给您之前执行,以验证

到数据库的连接仍然活着。再次尝试在没有这个属性的情况下运行池,

如果您的驱动程序不符合JDBC4, HikariCP将记录一个错误,让您知道。

默认值:无

metricRegistry

此属性只能通过编程配置或IoC容器使用。这个属性允许你指定一个Codahale/Dropwizard MetricRegistry的实例用于池来记录各种指标。

默认值:无

healthCheckRegistry

此属性只能通过编程配置或IoC容器使用。这个属性允许你指定一个Codahale/Dropwizard HealthCheckRegistry的实例

用于报告当前运行状况信息的池。

默认值:无

poolName

表示连接池的用户定义名称,主要出现在在日志记录和JMX管理控制台中识别池和池配置。

默认值:自动生成文章来源地址https://www.toymoban.com/news/detail-491475.html

springboot的hikari配置示例

spring:
  #JDBC
  datasource:
    #JDB连接池配置
    hikari:
      pool-name: spring-demo-1 #连接池名称
      connection-timeout: 60000 #请求连接的超时时间
      maximum-pool-size: 20 #最大连接数量
      max-lifetime: 1800000 #连接的最长生命周期
      keepalive-time: 1750000 #尝试保持连接的频率
      connection-test-query: select 1 #连接验证sql

到了这里,关于springboot 数据库连接池配置(hikari)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringBoot】三:访问数据库

    (1)新建数据库 (2)创建项目 启动lombok 【application.properties】 运行springboot,初始化数据库脚本。 之后不再初始化数据库脚本。 JdbcTemplate的方法 (1)execute 方法:可以用于执行任何 SQL 语句,常用来执行 DDL 语句。 (2)update、batchUpdate 方法:用于执行新增、修改与删除等语句

    2024年02月05日
    浏览(40)
  • C/C++ 连接访问 MySQL数据库

        前面我们已经讲述了MySQL的基础使用,现在我们来看一下如何使用语言来操作数据库。在实际开发中,语言连接MySQL是为了能够在编程语言中与MySQL数据库进行交互和操作。大部分情况我们都是通过语言连接MySQL,建立与MySQL数据库的连接,可以向MySQL数据库发送更新请求,

    2024年02月03日
    浏览(31)
  • MySql数据库允许外网访问连接

    正常情况下,mysql数据库是不支持外网进行访问的,只能在本机进行登录操作。 下面提供两种方式对mysql进行配置,即可进行外网访问 第一步:使用客户端在本机连接MySQL服务,登录。 然后找到mysql这个数据库,里面有user这种表,打开表 第二步:找到User是root,Host是localhos

    2023年04月10日
    浏览(72)
  • Springboot使用DataRest直接访问数据库

    Spring-boot-data-rest 直接将数据库资源映射成为Rest资源 说明 Spring Data REST是基于Spring Data的repository之上,可以把 repository 自动输出为REST资源, 目前支持Spring Data JPA、Spring Data MongoDB、Spring Data Neo4j、Spring Data GemFire、Spring Data Cassandra的 repository 自动转换成REST服务。 注意是自动。

    2024年02月11日
    浏览(25)
  • 本地MySQL数据库允许用任意ip连接访问

    1、进入本地mysql,输入下面命令,然后输入密码 mysql -uroot -proot 2、进入到mysql。然后选择mysql这个数据库 use mysql 3、 找到user这个表,然后查询一下里面的user和host字段   select user,host from user; 看到里面有一个root的用户对应的host值是一个localhost或者是127.0.0.1。 接下来要把这个

    2023年04月08日
    浏览(39)
  • SpringBoot项目连接数据库

    1、找到applications.yml,如下图  2、写入代码  

    2024年02月15日
    浏览(29)
  • Springboot 实践(7)springboot添加html页面,实现数据库数据的访问

            前文讲解,项目已经实现了数据库Dao数据接口,并通过spring security数据实现了对系统资源的保护。本文重点讲解Dao数据接口页面的实现,其中涉及页面导航栏、菜单栏及页面信息栏3各部分。 1、创建html页面         前文讲解中,资源目录已经建设完成,如图

    2024年02月12日
    浏览(26)
  • 数据库连接与访问(SQL server与VS2022)

    不同开发工具(开发语言)对数据链接访问的方法是不同的,本次实验主要通过VS2022中的数据工具连接SQL数据库,并通过执行相关代码对数据库中的数据进行处理,实现对窗口进行的系统主界面操作和按键控制操作。 1.首先连接到服务器,要注意登录的是sa账号  2.前期准备工

    2024年02月12日
    浏览(35)
  • SpringBoot 数据库高效的数据访问及安全解决方案

    作者:禅与计算机程序设计艺术 随着互联网的飞速发展,网站流量越来越多,用户数据也越来越丰富,如何有效地存储、处理和检索数据成为了一个新的技术难题。 Spring Boot 是 Spring 框架的一个轻量级开源框架,其在 JavaEE(Java Platform, Enterprise Edition)开发中扮演了重要角色

    2024年02月10日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包