中文 Chinese英文 English

0x01 使用方法

配置依赖:

com.zaxxer

HikariCP

2.6.2

项目没用使用spring等一系列高大上的轮子,在接入连接池的时候无法去配置datasource,所以使用的是比较简单粗暴的方式,手动创建HikariConfig,使用该对象去创建datasource。

private HikariDataSource initDataSource(String url, int jdbcPoolSize) {

HikariConfig config = new HikariConfig();

config.setDriverClassName("com.mysql.cj.jdbc.Driver");

config.setJdbcUrl(url);

config.setAutoCommit(false);

config.setConnectionTestQuery("SELECT 1;");

config.setMaximumPoolSize(jdbcPoolSize);

config.addDataSourceProperty("cachePrepStmts", "true");

config.addDataSourceProperty("prepStmtCacheSize", "250");

config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

config.setMaxLifetime(MAX_LIFE_TIME);

config.setIdleTimeout(IDLE_TIMEOUT);

return new HikariDataSource(config);

}

接下来就可以使用datasource来得到connection。连接池内的连接用完要释放掉,推荐try-with-resources。

0x02 hikari注意点需要服务器同NTP服务器保持同步(https://dba.stackexchange.com/questions/171002/choice-of-connection-pooling-library-for-vm-deploys/171020)。

hikari不支持连接池层的preparestatement缓存,推荐使用jdbc驱动的preparestatement缓存。

hikari也不支持Log Statement Text/Slow Query Logging,因为大多数的驱动都支持了。

0x03 hikari参数详解allowPoolSuspension:连接池是否可以被jmx挂起,如果连接池被挂起,getConnection就不会超时,默认值false。

autoCommit:connection是否自动提交,默认值true。

catalog:配置连接的数据库。

connectionInitSql:创建连接前默认执行的sql语句,如果语句执行失败连接则失败,然后重试连接,默认值无。

connectionTestQuery:jdbc4以下版本的驱动可以设置这个参数,用来支持jdbc4新提供的api,Connection.isValid(),默认值无。

connectionTimeout:从池中获取连接的最大等待时间,超时抛异常,默认值30s。

dataSource:对一些Ioc框架有用,如果设置其他的datasource参数将被忽略,默认值无。

dataSourceClassName:设置datasource jdbc驱动提供的类名,如果基于jdbc url的jdbc驱动则不须要设置,默认值无。

dataSourceJNDI:默认值无。

dataSourceProperties:datasource的properties。

driverClassName:基于jdbc url的jdbc驱动类。

healthCheckRegistry:Ioc框架在用,检测当前数据连接池的健康状态。

idleTimeout:连接在池中闲置超过这个时间,则删除。0表示空闲连接不删除,默认值10分钟。

initializationFailFast:是否开启failfast,默认值true。

initializationFailTimeout:连接池初始连接的timeout值,单位毫秒。如果在timeout的期间内无法初始化成功连接池,则抛出异常。如果设置为0,会尝试重连,重连失败则抛异常终止连接池,小于0表示不重连,默认值1。

isolateInternalQueries:是否将连接池的查询封装在自己的事务中,这个属性在autoCommit=false时生效,默认false。

jdbc4ConnectionTest:jdbc4驱动的test sql。

jdbcUrl:jdbc url。

leakDetectionThreshold:内存泄漏侦测入口,默认值0。

maxLifetime:连接最大存活时间。

maximumPoolSize:最大的缓冲池大小。

metricRegistry:Ioc框架在用,统计当前数据连接池的状态。

minimumIdle:最小空闲的连接数。

password:密码。

poolName:连接池名,给JMX用,默认值自动生成。

readOnly:连接是否只读,默认值false。

registerMbeans:是否注册管理构建工具,默认值false。

transactionIsolation:事务的隔离级别,默认驱动默认值。

username:用户名。

validationTimeout:连接活动的超时时间,必须比connectionTimeout小,默认250ms。

0x04 DataSource和DriverManager的对比

jdbc2.0开始使用了DataSource接口来创建连接。对比直接DriverManager的方式创建连接,DataSource会更优雅一些。可以自己实现DataSource封装创建连接的过程,也可以将DriverManager封装成DataSource创建连接。而DriverManager需要显示的将驱动类名硬编码在代码中。DataSource的方案会更面向连接池

0x05 hikari推荐配置

jdbcUrl=jdbc:mysql://localhost:3306/simpsons

user=test

password=test

dataSource.cachePrepStmts=true

dataSource.prepStmtCacheSize=250

dataSource.prepStmtCacheSqlLimit=2048

dataSource.useServerPrepStmts=true

dataSource.useLocalSessionState=true

dataSource.useLocalTransactionState=true

dataSource.rewriteBatchedStatements=true

dataSource.cacheResultSetMetadata=true

dataSource.cacheServerConfiguration=true

dataSource.elideSetAutoCommits=true

dataSource.maintainTimeStats=false

hikari如何切换数据源_hikari数据库连接池相关推荐

  1. hikari如何切换数据源_Hikari 数据源参数配置说明

    ###############################################hikari############################################ sp ...

  2. Hibernate配置数据源,数据库连接池

    来源:http://lihengwei453848.blog.163.com/blog/static/36866173200922262811669/ 连接池概念:      首先,我们还是老套的讲讲 ...

  3. hikari如何切换数据源_spring boot+mybatis 多数据源切换(实例讲解)

    由于公司业务划分了多个数据库,开发一个项目会同事调用多个库,经过学习我们采用了注解+aop的方式实现的 1.首先定义一个注解类 @Retention(RetentionPolicy.RUNTIME) ...

  4. hikari如何切换数据源_如何使用Spring为HikariCP设置数据源?

    你需要在bean配置上编写这个结构(这是你的数据源): ${dataSource.url} ${dataSource.username} ${dataSource.password} 这是我的例子,它 ...

  5. 【java基础知识】编写数据库连接池

    之前一直用JDBC,现在接触到了DataSource.网上查到数据库连接池工具最好用的是Druid.下面分别介绍一下. 1.DataSource   数据源 什么是数据源: JDBC2.0提供了jav ...

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

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

  7. 数据库连接池_DataSource_数据源(简单介绍C3P0和Druid)

    文章目录 概念 好处 实现 C3P0 基本使用 配置文件 druid 下载 jar 包 配置文件 演示代码 定义工具类 示例代码 概念 数据库连接池其实就是一个容器,而这个容器其实就是一个集合,这个集 ...

  8. springboot 多数据源(三种数据库连接池--JDBC,dbcp2,Druid)

    本文使用的是springboot2.0(在配置数据源时和springboot1.X略有区别) 首先:springboot默认支持的连接池有dbcp,dbcp2, tomcat, hikari四种连接池 ...

  9. Hikari数据库连接池

    demo测试 import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import j ...

最新文章

  1. php封装pdo实例以及pdo长连接的优缺点
  2. hdu 2563
  3. java jdbc url编码_java中jdbc/sql出现编码问题
  4. 迭代反投影法代码_程序员的数学笔记3--迭代法
  5. ES6之路第十三篇:Iterator和for...of循环
  6. ​《麻省理工科技评论》选出2019年全球十大突破性技术
  7. ie模式下html中的按钮失效,解决ewebeditor编辑器在IE8下按钮失效、点击后没反应的问题...
  8. Failed building wheel for scandir 解决方案
  9. python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码
  10. java+opencv实现人脸识别
  11. 企业微信扫码登录流程
  12. 浏览器配置异常_IE浏览器异常 修复/重置ie设置方法
  13. 缺陷管理工具JIRA和禅道对比
  14. arcgis engine 打开shp文件
  15. 51单片机步进电机c语言程序,51单片机的步进电机c语言驱动程序
  16. 【MMML】多模态机器学习高被引综述论文笔记
  17. [转载]创建、部署和调试 Apache Geronimo 应用程序
  18. Python数据类型之三(列表)
  19. Mockplus原型交互跟我做之5 - 使用内容面板快速切换内容
  20. storyboard使用入门

热门文章

  1. PHP的var_dump(‘1‘==‘1e0‘)的结果为true
  2. PHP参数会被用作对象名
  3. python数组切片教程_手把手numpy教程【二】——数组与切片
  4. python图片批量处理器_用python给图片批量打水印
  5. linux tomcat java heap space_Linux下tomcat JVM内存设置
  6. 计算机心得300,计算机实训总结计算机实训心得300
  7. ip冲突 scan windows_Linux下IP 冲突查看及解决方法
  8. 【Thymeleaf】格式化日期
  9. 公务员考试中的计算机知识点,2021年度公务员考试计算机基础知识试题.doc
  10. Kubernetes基础学习(一)