数据库连接池Druid与Hikari对比详解
目录
- Druid竞品对比
- Hikari 官方性能测试数据
- 对比
- 总结
Druid竞品对比
功能类别 | 功能 | Druid | HikariCP | DBCP | Tomcat-jdbc | C3P0 |
---|---|---|---|---|---|---|
性能 | PSCache | 是 | 否 | 是 | 是 | 是 |
LRU | 是 | 否 | 是 | 是 | 是 | |
SLB负载均衡支持 | 是 | 否 | 否 | 否 | 否 | |
稳定性 | ExceptionSorter | 是 | 否 | 否 | 否 | 否 |
扩展 | 扩展 | Filter | JdbcIntercepter | |||
监控 | 监控方式 | jmx/log/http | jmx/metrics | jmx | jmx | jmx |
支持SQL级监控 | 是 | 否 | 否 | 否 | 否 | |
Spring/Web关联监控 | 是 | 否 | 否 | 否 | 否 | |
诊断支持 | LogFilter | 否 | 否 | 否 | 否 | |
连接泄露诊断 | logAbandoned | 否 | 否 | 否 | 否 | |
安全 | SQL防注入 | 是 | 无 | 无 | 无 | 无 |
支持配置加密 | 是 | 否 | 否 | 否 | 否 |
Hikari 官方性能测试数据
SpringBoot 现在官方默认的数据库连接池是 HikariCP,HikariCP的性能从测试的数据上来看也是最高的。
对比
- 功能角度考虑,Druid 功能更全面,除具备连接池基本功能外,还支持sql级监控、扩展、SQL防注入等。最新版甚至有集群监控
- 单从性能角度考虑,从数据上确实HikariCP要强,但Druid有更多、更久的生产实践,它可靠
- 单从监控角度考虑,如果我们有像skywalking、prometheus等组件是可以将监控能力交给这些的 HikariCP 也可以将metrics暴露出去
总结
系统架构上有专门用于监控的系统(SkyWalking、Prometheus);所以可以将监控的功能交给这些系统,让数据库连接池专心做好连接池的本职工作,所以我们选择性能更好的 HikariCP 做为数据库连接池。由于我们使用了Spring boot ,HikariCP 是内置的,也更方便配置使用,能做到开箱即用。
以上就是数据库连接池Druid与Hikari对比详解的详细内容,更多关于数据库连接池选Druid Hikari的资料请关注我们其它相关文章!
相关推荐
-
Express连接MySQL及数据库连接池技术实例
目录 Express连接MySQL 准备工作 创建配置文件 创建操作数据库的接口文件 数据库连接池技术 什么是数据库连接池 数据库连接池的作用是什么? 数据库连接池技术实例 1.导入mysql模块 2.创建数据库连接池 3.获取数据库链接对象 4.释放数据库连接对象 完整实例 Express连接MySQL 准备工作 打开webstorm新建项目选择express创建一个express项目. 创建成功后其页面如下: 为了连接mysql数据库还需要导入mysql模块. 创建配置文件 在项目中创建co
-
解决springboot druid数据库连接池连接失败后一直重连问题
目录 druid数据库连接池连接失败后一直重连问题 druid数据库连接池技术的实现与常见错误 第一步,win+R cmd进入到doc窗口,敲入mysql -V 第二步,写好配置文件jdbc.properties 总结 druid数据库连接池连接失败后一直重连问题 当数据库暂停或者拒绝连接时,druid会一直连接 增加如下配置可以解决重连问题 spring.datasource.druid.break-after-acquire-failure=true spring.datasource.dr
-
Python封装数据库连接池详解
目录 一.数据库封装 1.1数据库基本配置 1.2 编写单例模式注解 1.3 构建连接池 1.4 封装Python操作MYSQL的代码 二.连接池测试 场景一:同一个实例,执行2次sql 场景二:依次创建2个实例,各自执行sql 场景三:启动2个线程,但是线程在创建连接池实例时,有时间间隔 场景四:启动2个线程,线程在创建连接池实例时,没有时间间隔 前言: 线程安全问题:当2个线程同时用到线程池时,会同时创建2个线程池.如果多个线程,错开用到线程池,就只会创建一个线程池,会共用一个线程池.我用的
-
springboot druid数据库连接池连接失败后一直重连的解决方法
目录 druid 重连原因 errorCount 错误次数 总结 在使用个人阿里云测试机,在查询实时输出日志时,看到数据库连接失败后,服务器一直在重连服务器.开始以为是遭受重复攻击,后面把服务重启后,就没有出现一直重连的情况.看以下输出日志: 2022-02-09 11:04:58.896 ERROR 16876 --- [eate-1550991149] com.alibaba.druid.pool.DruidDataSource : create connection SQLExcept
-
数据库连接池Druid与Hikari对比详解
目录 Druid竞品对比 Hikari 官方性能测试数据 对比 总结 Druid竞品对比 功能类别 功能 Druid HikariCP DBCP Tomcat-jdbc C3P0 性能 PSCache 是 否 是 是 是 LRU 是 否 是 是 是 SLB负载均衡支持 是 否 否 否 否 稳定性 ExceptionSorter 是 否 否 否 否 扩展 扩展 Filter JdbcIntercepter 监控 监控方式 jmx/log/http jmx/metrics jmx jmx jmx 支
-
关于数据库连接池Druid使用说明
根据综合性能,可靠性,稳定性,扩展性,易用性等因素替换成最优的数据库连接池. Druid:druid-1.0.29 数据库 Mysql.5.6.17 替换目标:替换掉C3P0,用druid来替换 替换原因: 1.性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 .hikariCP的高性能得益于最大限度的避免锁竞争. 2.druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性. 3.综合性能,扩展性等方面,可考虑使用druid或
-
MyBatis-Plus+Druid配置及应用详解
Mybatis-Plus的配置 1.Maven插件 velocity-engine-core是mybatis-plus自动生成代码所依赖的模板(不用自动生成代码功能可不用) <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.6</version> </
-
Java 数据库连接池Druid 的介绍
目录 1.配置参数 2.使用 2.1.直接使用 2.1.1.引入依赖 2.1.2.使用例子 2.2.在 SpringBoot 中使用 2.1.1.引入依赖 2.1.2.单数据源 2.1.3.多数据源 2.1.4.开启监控功能 前言: Druid 连接池是阿里巴巴开源的数据库连接池项目,Druid 为监控而生,内置强大的监控功能,监控特性不影响性能,官网地址为:https://github.com/alibaba/druid/wiki/,本文主要介绍 Druid 的基本使用,文中使用到的软件版本:
-
ThreadPoolExecutor线程池原理及其execute方法(详解)
jdk1.7.0_79 对于线程池大部分人可能会用,也知道为什么用.无非就是任务需要异步执行,再者就是线程需要统一管理起来.对于从线程池中获取线程,大部分人可能只知道,我现在需要一个线程来执行一个任务,那我就把任务丢到线程池里,线程池里有空闲的线程就执行,没有空闲的线程就等待.实际上对于线程池的执行原理远远不止这么简单. 在Java并发包中提供了线程池类--ThreadPoolExecutor,实际上更多的我们可能用到的是Executors工厂类为我们提供的线程池:newFixedThreadP
-
在python中获取div的文本内容并和想定结果进行对比详解
div的内容为: <div style="background-color: rgb(255, 238, 221);" id="status" class="errors">您输入的用户名或密码有误.</div> # coding:utf-8 from selenium import webdriver browser = webdriver.Firefox() url = 'file:///C:/Users/li/Des
-
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
前言 大家使用 Django 创建模型的时候一定会经常使用 ForeignKey 来创建两个表格之间多对一的外键关系,例如B中有一个 models.ForeignKey(A) .而当我们需要反向查询 A 中某个具体实例所关联的 B 时,可能会用到 A.B_set.all() 或 B.objects.filter(A) 这两种不同的方法. 不知道大家有没有也想过一个问题:当网站实际上线后,SEO强调页面加载速度,而当面对不断增大的请求量,这两种方法的哪一种速度更快? 馆主我产生了这个疑问,所以就打
-
python多进程使用及线程池的使用方法代码详解
多进程:主要运行multiprocessing模块 import os,time import sys from multiprocessing import Process class MyProcess(Process): """docstring for MyProcess""" def __init__(self, arg, callback): super(MyProcess, self).__init__() self.arg = a
-
Python 内置函数globals()和locals()对比详解
这篇文章主要介绍了Python globals()和locals()对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python的两个内置函数,globals()和locals() ,它们提供了基于字典的访问局部和全局变量的方式. globals()是可写的,即,可修改该字典中的键值,可新增和删除键值对. 而locals()是不可修改字典中已存在的键值的,也不能pop移除键值对,但是可以新增键值对. Demo: a = 1 # 定义一个
-
lambda表达式与传统接口函数实现方式对比详解
目录 在本号之前写过的一些文章中,笔者使用了lambda表达式语法,一些读者反映说代码看不懂.本以为java 13都已经出了,java 8中最重要特性lambda表达式大家应该都掌握了,实际上还是存在大量的程序员没有使用java8,还有的使用了java8也不会使用lambda表达式.所以,写这篇文章还是有必要的,如果您觉得我的文章对您有帮助,期待您的关注. Lambda表达式是Java 8最流行最常用的功能特性.它将函数式编程概念引入Java,函数式编程的好处在于可以帮助我们节省大量的代码,非常
随机推荐
- Flex中Array的IndexOf 的作用示例介绍
- 个人用户防黑指南
- Jquery 快速构建可拖曳的购物车DragDrop
- DOS下常用网络相关命令解释
- OpenStack 创建windows镜像实现步骤
- javascript之typeof、instanceof操作符使用探讨
- 5分钟理解JavaScript中this用法分享
- 响应鼠标变换表格背景或者颜色的代码
- 通过javascript把图片转化为字符画
- php中目录,文件操作详谈
- textarea中的手动换行处理的jquery代码
- 本地策略提示不能确定应用到此机器的组策略安全性设置的解决方法
- 入侵检测及网络安全发展技术探讨
- Unix下C程序内存泄漏检测工具Valgrind的安装与使用详解
- ASPNETPAGER分页控件的使用方法[图文]
- c#反射调用方法示例
- 红葡萄酒的饮用方法与注意事项
- 让你畅游国内网络无障碍统一加速器
- iOS开发之image图片压缩及压缩成指定大小的两种方法
- 使用vue-cli编写vue插件的方法