hikari如何切换数据源_hikari数据库连接池
中文 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数据库连接池相关推荐
- hikari如何切换数据源_Hikari 数据源参数配置说明
###############################################hikari############################################ sp ...
- Hibernate配置数据源,数据库连接池
来源:http://lihengwei453848.blog.163.com/blog/static/36866173200922262811669/ 连接池概念: 首先,我们还是老套的讲讲 ...
- hikari如何切换数据源_spring boot+mybatis 多数据源切换(实例讲解)
由于公司业务划分了多个数据库,开发一个项目会同事调用多个库,经过学习我们采用了注解+aop的方式实现的 1.首先定义一个注解类 @Retention(RetentionPolicy.RUNTIME) ...
- hikari如何切换数据源_如何使用Spring为HikariCP设置数据源?
你需要在bean配置上编写这个结构(这是你的数据源): ${dataSource.url} ${dataSource.username} ${dataSource.password} 这是我的例子,它 ...
- 【java基础知识】编写数据库连接池
之前一直用JDBC,现在接触到了DataSource.网上查到数据库连接池工具最好用的是Druid.下面分别介绍一下. 1.DataSource 数据源 什么是数据源: JDBC2.0提供了jav ...
- springboot默认数据源如何设置连接数_Spring Boot系列之配置数据库连接池
在实际的应用开发中,与数据库交互通常使用数据库连接池来重用Connection对象,减少资源消耗. Spring Boot 的数据源是自动配置的.在 Spring Boot 2.2.1 版本中,有几种 ...
- 数据库连接池_DataSource_数据源(简单介绍C3P0和Druid)
文章目录 概念 好处 实现 C3P0 基本使用 配置文件 druid 下载 jar 包 配置文件 演示代码 定义工具类 示例代码 概念 数据库连接池其实就是一个容器,而这个容器其实就是一个集合,这个集 ...
- springboot 多数据源(三种数据库连接池--JDBC,dbcp2,Druid)
本文使用的是springboot2.0(在配置数据源时和springboot1.X略有区别) 首先:springboot默认支持的连接池有dbcp,dbcp2, tomcat, hikari四种连接池 ...
- Hikari数据库连接池
demo测试 import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import j ...
最新文章
- php封装pdo实例以及pdo长连接的优缺点
- hdu 2563
- java jdbc url编码_java中jdbc/sql出现编码问题
- 迭代反投影法代码_程序员的数学笔记3--迭代法
- ES6之路第十三篇:Iterator和for...of循环
- ​《麻省理工科技评论》选出2019年全球十大突破性技术
- ie模式下html中的按钮失效,解决ewebeditor编辑器在IE8下按钮失效、点击后没反应的问题...
- Failed building wheel for scandir 解决方案
- python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码
- java+opencv实现人脸识别
- 企业微信扫码登录流程
- 浏览器配置异常_IE浏览器异常 修复/重置ie设置方法
- 缺陷管理工具JIRA和禅道对比
- arcgis engine 打开shp文件
- 51单片机步进电机c语言程序,51单片机的步进电机c语言驱动程序
- 【MMML】多模态机器学习高被引综述论文笔记
- [转载]创建、部署和调试 Apache Geronimo 应用程序
- Python数据类型之三(列表)
- Mockplus原型交互跟我做之5 - 使用内容面板快速切换内容
- storyboard使用入门
热门文章
- PHP的var_dump(‘1‘==‘1e0‘)的结果为true
- PHP参数会被用作对象名
- python数组切片教程_手把手numpy教程【二】——数组与切片
- python图片批量处理器_用python给图片批量打水印
- linux tomcat java heap space_Linux下tomcat JVM内存设置
- 计算机心得300,计算机实训总结计算机实训心得300
- ip冲突 scan windows_Linux下IP 冲突查看及解决方法
- 【Thymeleaf】格式化日期
- 公务员考试中的计算机知识点,2021年度公务员考试计算机基础知识试题.doc
- Kubernetes基础学习(一)