HikariCP 的Java数据库连接池介绍及配置
为何要使用HiKariCP?这要先从BoneCP说起:
什么?不是有C3P0/DBCP这些成熟的数据库连接池吗?一直用的好好的,为什么又搞出一个BoneCP来?因为,传说中BoneCP在快速这个特点上做到了极致,官方数据是C3P0等的25倍左右。不相信?其实我也不怎么信。可是,有图有真相啊(图片来自BoneCP官网:http://jolbox.com/benchmarks.html):
- 字节码精简:优化代码,直到编译后的字节码最少,这样,CPU缓存可以加载更多的程序代码;
- 优化代理和拦截器:减少代码,例如HikariCP的Statement proxy只有100行代码,只有BoneCP的十分之一;
- 自定义数组类型(FastStatementList)代替ArrayList:避免每次get()调用都要进行range check,避免调用remove()时的从头到尾的扫描;
- 自定义集合类型(ConcurrentBag):提高并发读写的效率;
- 其他针对BoneCP缺陷的优化,比如对于耗时超过一个CPU时间片的方法调用的研究(但没说具体怎么优化)。
- <!-- BoneCp Datasource -->
- <bean id="dataSourceBoneCp" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
- <property name="driverClass" value="${db.driverClass}" />
- <property name="jdbcUrl" value="${db.url}" />
- <property name="username" value="${db.username}" />
- <property name="password" value="${db.password}" />
- <property name="idleConnectionTestPeriodInMinutes" value="2" />
- <property name="idleMaxAgeInMinutes" value="2" />
- <property name="maxConnectionsPerPartition" value="2" />
- <property name="minConnectionsPerPartition" value="0" />
- <property name="partitionCount" value="2" />
- <property name="acquireIncrement" value="1" />
- <property name="statementsCacheSize" value="100" />
- <property name="lazyInit" value="true"/>
- <property name="maxConnectionAgeInSeconds" value="20"/>
- <property name="defaultReadOnly" value="true"/>
- </bean>
- <!-- Hikari Datasource -->
- <bean id="dataSourceHikari" class="com.zaxxer.hikari.HikariDataSource" destroy-method="shutdown">
- <!-- <property name="driverClassName" value="${db.driverClass}" /> --> <!-- 无需指定,除非系统无法自动识别 -->
- <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" />
- <property name="username" value="${db.username}" />
- <property name="password" value="${db.password}" />
- <!-- 连接只读数据库时配置为true, 保证安全 -->
- <property name="readOnly" value="false" />
- <!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
- <property name="connectionTimeout" value="30000" />
- <!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
- <property name="idleTimeout" value="600000" />
- <!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->
- <property name="maxLifetime" value="1800000" />
- <!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
- <property name="maximumPoolSize" value="15" />
- </bean>
HikariCP 的Java数据库连接池介绍及配置相关推荐
- java数据库连接池选择及开发配置
一.数据库连接池概述 数据库连接的建立是一种耗时.性能低.代价高的操作,频繁的数据库连接的建立和关闭极大的影响了系统的性能.数据库连接池是系统初始化过程中创建一定数量的数据库连接放于连接池中,当程序需 ...
- Spring Boot 2.0选择HikariCP作为默认数据库连接池的五大理由
转载自公众号:工匠小猪猪的技术世界 摘要: 本文非原创,是「工匠小猪猪的技术世界」搜集了一些HikariCP相关的资料整理给大家的介绍,主要讲解了为什么sb2选择了HikariCP以及HikariCP ...
- Springboot 2.0选择HikariCP作为默认数据库连接池的五大理由
转载自公众号:工匠小猪猪的技术世界 摘要: 本文非原创,是笔者搜集了一些HikariCP相关的资料整理给大家的介绍,主要讲解了为什么sb2选择了HikariCP以及HikariCP为什么这么快. Sp ...
- 主流Java数据库连接池比较及前瞻
本文转载自微信公众号「工匠小猪猪的技术世界」 主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC ...
- 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
http://developer.51cto.com/art/201807/579402.htm 主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.B ...
- Java数据库连接池--DBCP浅析
转载自 Java数据库连接池--DBCP浅析 前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用 ...
- Java 数据库连接池的技术选型都应考虑哪些要素
为什么80%的码农都做不了架构师?>>> 数据库连接池是一个牵涉面很广的话题,对于大型系统,数据库连接池的好坏,关系到系统的性能和稳定性,因此,选好数据库连接池,是系统在架构时 ...
- Spring Boot学习总结(18)——Springboot 2.0选择HikariCP作为默认数据库连接池的五大理由
Springboot2默认数据库连接池选择了HikariCP为何选择HikariCP理由一.代码量理由二.口碑理由三.速度理由四.稳定性理由五.可靠性HikariCP为什么这么快优化并精简字节码更好的 ...
- java 连接池 druid_从零开始学 Java - 数据库连接池的选择 Druid
我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...
- JAVA数据库连接池实现
转载自 JAVA数据库连接池实现 连接池的管理用了了享元模式,这里对连接池进行简单设计. 一.设计思路 1.连接池配置属性DBbean:里面存放可以配置的一些属性 2.连接池接口IConnecti ...
最新文章
- 激动~这是我看到的最好的目标检测RCNN了!
- wmic 获取计算机ip,【已解决】xp系统下,受限用户如何用批处理在不使用wmic获取多个网卡的IP地址?...
- centos7安装Metricbeat7.6.0采集nginx指标
- 阿里云IoT Studio升级版新增解决方案引擎,大幅提升方案交付效率
- ubuntu19.10安装haroopad软件
- [Leedcode][JAVA][第102题][二叉树的层序遍历][递归][迭代][BFS]
- 一组数字中算出最相近的组合_据说在金字塔里发现的这组数字,貌似是通往宇宙的密码...
- 10倍加速!爱奇艺超分辨模型加速实践
- 能从入门到精通的 Docker 学习指南
- 什么是13薪,真的有18薪、25薪的不?
- 使用NodeJS将文件或图像上传到服务器
- 【渝粤教育】国家开放大学2019年春季 2106宪法学 参考试题
- Redis 的过期策略
- PS教程新手入门(一)--去除图片上文字的方法(6种)
- c++ 制作木马病毒
- macos 版本_如何检查您使用的macOS版本
- 数据外泄保护与国土安全部
- 2019-02-13 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?
- 利用pearcmd.php本地文件包含(LFI)
- python1000以内水仙花数_python 计算1000以内的水仙花数
热门文章
- 分组数据筛选(group by后取出每组的第n条数据)
- Mac OS X下的截屏功能和使用技巧
- 针对IE 7的hack写法
- 拓端tecdat|R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
- html5隐藏自定义控制按钮,用仿ActionScript的语法来编写html5——第七篇,自定义按钮...
- Linux中文件目录写法
- oss读取指定文件夹下所有图片
- ubuntu16.04安装驱动
- 用python进行人脸识别
- caffe上手:微调CaffeNet用于车颜色识别