微服务架构 ------ 插曲 hikari连接池的配置

开胃菜:据说hikari连接池很快,快到让另一个连接池的作者抛弃对自己连接池的维护,并且强烈推荐使用hikari

连接池目前我们项目使用的有两个 一个是Druid , 一个是 Hikari,

其中Druid关注的是连接池中连接的监控作用,而Hikari注重的是连接池中连接的创建和回收的速度,因此Hikari会有更高的效率

Druid的配置:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        初始化连接大小
        <property name="initialSize" value="${initialSize}"></property>
        连接池最大数量
        <property name="maxActive" value="${maxActive}"></property>
        连接池最小空闲
        <property name="minIdle" value="${minIdle}"></property>
        获取连接最大等待时间
        <property name="maxWait" value="${maxWait}"></property>
        <property name="filters" value="stat,config" />
        <property name="connectionProperties" value="config.decrypt=true" />
  </bean>

Hikari的配置:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
        destroy-method="close">
        <!-- 无需指定,除非系统无法自动识别 -->
        <property name="jdbcUrl" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <!-- 连接只读数据库时配置为true, 保证安全 -->
        <property name="readOnly" value="false" />
        <!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
        <property name="connectionTimeout" value="30000" />
        <!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
        <property name="idleTimeout" value="60000" />
        <!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->
        <property name="maxLifetime" value="1800000" />
        <!-- idleTimeout只有在minimumIdle设置为小于maximumPoolSize的情况下才生效 -->
        <property name="minimumIdle" value="10" />
        <!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
        <property name="maximumPoolSize" value="15" />
    </bean>

以上两个都是同事琢磨出来的配置,仅供参考吧。

还有一个就是Hikari在spring-boot中的配置

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xx.xx.xx.xx:3306/xx?characterEncoding=UTF-8&useUnicode=true&autoReconnect=true&useCursorFetch=true&defaultFetchSize=100&serverTimezone=UTC
    username: root
    password: root
    hikari:
      minimum-idle: 5
      idle-timeout: 600000
      auto-commit: true
      pool-name: Hikari Pool
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: Select 1

就这些了,只是做个记录

原文地址:https://www.cnblogs.com/zmeRecord/p/11775485.html