HikariPool连接池的使用

2023-11-14

 

 

 HikariDataSource datasource= new HikariDataSource( xxxx );


Connection cn = datasource.getConnection();

try {

cn.doXXX()
} finnally(){

connection.close();// connection的实现类(代理类)自己会调用hikariPool.evictConnection(cn) ,将此连接回收到pool中
}

connection回收到池中是连接池自己做的事, 业务代码不用关心物理连接是否真的关闭,只需要调用close()方法



Hikari中connection.close()的实现 
 

 


Druid close()实现

 




测试代码: 使用连接池用时500ms, 不使用连接池用时8s, 相差16倍.
每个连接的创建都要经过http握手、密码认证,这里比较耗时, mysql给每个connection分配一个id
public class DBpoolTest {

    private static final HikariDataSource ds;

    static {
        HikariConfig conf = new HikariConfig();
        conf.setUsername("root");
        conf.setPassword("root");
        conf.setJdbcUrl("jdbc:mysql://localhost:3306/abc");
        ds = new HikariDataSource(conf);
    }

    @Test
    public void test_1() throws SQLException {
        long st = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            Connection connection = ds.getConnection();
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("select now() from dual");
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
            }
            connection.close();
        }
        System.out.println(System.currentTimeMillis() - st);
    }

    @Test
    public void test_2() throws SQLException {
        long st = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/abc", "root", "root");
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("select now() from dual");
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
            }
            connection.close();
        }
        System.out.println(System.currentTimeMillis() - st);
    }
}

  











转载于:https://www.cnblogs.com/yszzu/p/10192206.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HikariPool连接池的使用 的相关文章

随机推荐

  • chrony时钟同步详解

    一 简介 Chrony是一个开源的自由软件 它能帮助你保持系统时钟与时钟服务器 NTP 同步 因此让你的时间保持精确 它由两个程序组成 分别是chronyd和chronyc chronyd是一个后台运行的守护进程 用于调整内核中运行的系统时
  • 2023年最新VMware 17+虚拟机详细配置安装【程序员使用指南】!!

    文章目录 Vmware版本选择17Pro安装 自定义安装 填写对应的许可证 正式安装虚拟机 进行对应的配置 配置镜像文件 选择对应的语言 到这个界面 选择中文 安装结束 连接对应的xshell Vmware版本选择17Pro安装 最开始从这
  • 沃尔玛(Walrmart)运营指南,爆单技巧

    沃尔玛自2016年快速扩张以来 发展迅速 甚至屡次与亚马逊公开叫板 各种促销活动针锋相对 使得跨境卖家对于沃尔玛的兴趣不断飙升 但是还是有很多跨境玩家对于这个平台不算了解 更不知道其运营逻辑 今天就为大家讲清楚walmart运营技巧 如何快
  • GitHub 上传文件过大报错:remote: error: GH001: Large files detected.

    1 查看哪个文件过大了 remote Resolving deltas 100 24 24 completed with 3 local objects remote warning File CPT 0707 ao temp past t
  • Leetcode 376.摆动序列

    题目 如果连续数字之间的差严格地在正数和负数之间交替 则数字序列称为 摆动序列 第一个差 如果存在的话 可能是正数或负数 仅有一个元素或者含两个不等元素的序列也视作摆动序列 例如 1 7 4 9 2 5 是一个 摆动序列 因为差值 6 3
  • Ubuntu16.04下编译OpenCV3.0.0

    目录 目录 前言 cmake gui安装过程 CMake编译OpenCV300 CMake编译OpenCV320 前言 原来在海思上使用的是OpenCV2 4 9版本 现在需要在odroid上编译OpenCV3 0 0版本 特此记录 cma
  • CentOS 7 常用软件安装汇总

    基本指令 clear 清屏 pwd 显示当前路径 more 显示文本文档 uname a 查看当前核心版本号 free 查看剩余内存 df h 查看磁盘剩余空间 du sh
  • Tomcat 正确安装并启动后,浏览器访问localhost:8080显示404

    目录 1 确认 Tomcat 安装正确 且已打开 2 查看8080端口是否被占用 3 端口被占用的解决方法 在初次使用 Tomcat 时遇到了一些问题 经过一段时间的调试最终将其解决 个人感觉此问题应该比较常见 因此在这做一个分享 关于 T
  • Web 服务器如何工作

    Web 服务器如何工作 什么是网络服务器 Web 服务器是一种侦听传入连接 然后利用 HTTP 协议将 Web 内容传送给客户端的软件 您会遇到的最常见的 Web 服务器软件是 Apache Nginx IIS 和 NodeJS Web 服
  • 某翻译平台的爬虫坑,你踩了吗?

    大家好 我是阿爬 这里是讲述阿爬和阿三爬虫故事的爬友圈 近期 阿三有一个自动化翻译的小需求 于是找到阿爬 想要一个好的方案 阿爬首先想到的是调用某平台的翻译接口 奈何需要付费 于是心想还是用爬虫技术撸一把吧 于是开始了翻译平台逆向 1 初步
  • unity多个相机实现切换

    做项目的过程中遇到一个问题 有6个相机 需要实现点击按钮切换到某个相机 从网上看了一些文章 有些已经不再用了 比如说enable 做的过程中还遇到了找不到组件的情况 趁晚上有时间记录下这些 核心实现方法 gameobject setActi
  • zabbix性能调优

    zabbix性能调优 服务器环境 centos7 zabbix3 2 mariadb 1 从监控项调整 1 关掉没必要的监控项 zabbix自带模板里面涉及各种监控项 实际情况并不需要用到所有的 可以根据自带模板内容自己创建模板 也可以将模
  • ssm+java计算机毕业设计煤矿安全管理信息系统iz40r(程序+lw+源码+远程部署)

    项目运行 项目含有源码 见文末 文档 程序 数据库 配套开发软件 软件安装教程 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe M
  • node运行报错Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested

    node在连接mysql中报错解决 原因 登录数据库的客户端跟mysql8 0不兼容了 mysql8 0密码认证采用了新的密码格式 简单来说就是mysql版本问题 报错信息 mysql模块可以使我们在js中写mysql语句 操作mysql
  • RunTime.getRunTime().addShutdownHook的用法

    RunTime getRunTime addShutdownHook的用法 常识的Blog的博客 CSDN博客
  • 图的五种最短路径算法

    本文总结了图的几种最短路径算法的实现 深度或广度优先搜索算法 费罗伊德算法 迪杰斯特拉算法 Bellman Ford 算法 1 深度或广度优先搜索算法 解决单源最短路径 从起点开始访问所有深度遍历路径或广度优先路径 则到达终点节点的路径有多
  • VLC 不能识别带空格的URL

    转自 http blog csdn net pizicai105 article details 5414944 7 VLC无法识别URL带空格 需要进行转义 转义符为 2B 空格 转义符为 或 20 转义符为 2F 转义符为 3F 转义符
  • Regular Expressions --正则表达式官方教程

    http docs oracle com javase tutorial essential regex index html This lesson explains how to use the java util regex API
  • (11)DataFrame索引和切片

    内容 访问 对列进行访问 对行进行访问 对元素进行访问 切片 import numpy as np import pandas as pd from pandas import Series DataFrame arr np random
  • HikariPool连接池的使用

    HikariDataSource datasource new HikariDataSource xxxx Connection cn datasource getConnection try cn doXXX finnally conne