返回顶部
首页 > 资讯 > 数据库 >jdbc中自带MySQL 连接池实践示例
  • 666
分享到

jdbc中自带MySQL 连接池实践示例

jdbc MySQL连接池MySQL连接池 2022-07-21 13:07:12 666人浏览 薄情痞子
摘要

引言 在上期文章自定义 Mysql 连接池中,我提到了没找到一个特别合适的 mysql 连接池实现,所以自己写了一个基于通用池化框架commons-pool2的 Mysql 连接池,并且模仿了 Go 语言的gORM框架设

引言

在上期文章自定义 Mysql 连接池中,我提到了没找到一个特别合适的 mysql 连接池实现,所以自己写了一个基于通用池化框架commons-pool2的 Mysql 连接池,并且模仿了 Go 语言的gORM框架设计思路,把的操作不暴露给用户,只处理用户发来的 SQL 语句的思路,封装了一个com.funtester.db.mysql.MysqlPool

可惜打脸的事情来的太快了,在录制视频的时候偶然发现了 Intellij 代码提示有个com.mysql.cj.jdbc.MysqlConnectionPoolDataSource的类。这还了得,看名字就知道是我想要的那款。

经过查阅资料,好像也没搜到太多详细的资料。看官方的文档,也是遮遮掩掩,仿佛并不很推荐这个实现。关于 MySQL 连接池的管理,在 spring 语境下,应该有相当多更好的实践。但是对于测试来讲,那些太重,不太适合脚本化使用。不管怎样,我还是注意到了这个 MySQL 连接池的实现类。

关于它的名字,我在 stackoverflow 看到有人讨论,表示说叫它 MySQL 连接池并不恰当,因为它只是高效管理了连接的资源使用,并没有池化。这一点在我实测中也发现了,使用获取连接的时候,一直都是在创建新的连接。然后再连接空闲时间超过了设置之后,回收掉这个连接,回收的方法就是调用close()方法。

对于一般池化技术来讲,就是为了解决重用问题。如果连接并不重用,而是进行高效资源回收管理,其实并不算一个非常优秀的解决方案。

下面是com.mysql.cj.jdbc.MysqlConnectionPoolDataSource使用实践,比较简单,api 倒是挺多的,但是大多数都用不到。

package com.funtest.groovytest
import com.funtester.frame.SourceCode
import com.mysql.cj.jdbc.MysqlConnectionPoolDataSource
class MysqlPoolTe extends SourceCode {
    public static void main(String[] args) {
        def query = "select * from testers limit 2;"
        def source = new MysqlConnectionPoolDataSource()
        source.setServerName("localhost")
        source.setPort(3306)
        source.setUser("root")
        source.setPassword("root123456")
        source.setDatabaseName("funtester")
        source.setAllowMultiQueries(true)
        def connection = source.getPooledConnection()
        def statement = connection.getConnection().createStatement()
        while (true) {
            sleep(1)
            def query = statement.executeQuery(query)
            while (query.next()) {
                output query.getString("name")
            }
        }
    }
}

这里有个很容易的坑,就是有个setURL()还有一个setUrl(),其实这两个没有任何区别,我只能说可能为了兼容旧版本把。还有就是设置了 URL 之后,好像 database 设置不起作用了,也是妙明感觉设计真糟心,所以在上面的案例中我也没有用到这俩方法。

下面是我的测试结果,如图所示创建了超级多的线程,但是一直连接的只有很少。大概是经过几秒钟就会被回收一次,但是总创建数依旧非常高。

jdbc中自带MySQL 连接池实践示例

以后大概率我不会使用这个com.mysql.cj.jdbc.MysqlConnectionPoolDataSource实现类,依旧会继续完善自己的连接池功能。

以上就是jdbc中自带MySQL 连接池实践示例的详细内容,更多关于jdbc MySQL 连接池的资料请关注我们其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: jdbc中自带MySQL 连接池实践示例

本文链接: https://lsjlt.com/news/33419.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • jdbc中自带MySQL 连接池实践示例
    引言 在上期文章自定义 mysql 连接池中,我提到了没找到一个特别合适的 MySQL 连接池实现,所以自己写了一个基于通用池化框架commons-pool2的 MySQL 连接池,并且模仿了 Go 语言的gorm框架设...
    99+
    2022-07-21
    jdbc MySQL连接池 MySQL连接池
  • jdbc中自带MySQL 连接池实践示例
    引言 在上期文章自定义 MySQL 连接池中,我提到了没找到一个特别合适的 MySQL 连接池实现,所以自己写了一个基于通用池化框架commons-pool2的 MySQL 连接池,...
    99+
    2024-04-02
  • python自制简易mysql连接池的实现示例
    目录连接池是什么? 为什么需要连接池? 连接池的原理是什么? 使用python语言自制简易mysql连接池 开始使用 自定义配置文件名 & 配置标签 ...
    99+
    2024-04-02
  • jdbc结合dpcp连接池进行封装的示例分析
    这篇文章主要介绍jdbc结合dpcp连接池进行封装的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!demo需求:实现jdbc结合dpcp连接池的封装(以oracle数据库为例)并实现简单地查找demo主要技术...
    99+
    2023-05-30
    jdbc
  • JDBC连接的六步实例代码(与mysql连接)
    JDBC的六步: 1.注册驱动 2.获取数据库的连接 3.获取数据库的操作对象 4.执行sql语句 5.处理查询结果集(如果执行的语句中没有select语句这一步不用写) ...
    99+
    2024-04-02
  • golang中mysql数据库连接池的示例分析
    这篇文章主要介绍golang中mysql数据库连接池的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!golang的优点golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标...
    99+
    2023-06-15
  • Express连接MySQL及数据库连接池的示例分析
    这篇文章主要介绍Express连接MySQL及数据库连接池的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Express连接MySQL准备工作打开webstorm新建项目选择express创建一个expres...
    99+
    2023-06-29
  • python3 实现mysql数据库连接池的示例代码
    dbutils封装文件传送门 DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。...
    99+
    2024-04-02
  • Express连接MySQL及数据库连接池技术实例
    目录Express连接MySQL准备工作创建配置文件创建操作数据库的接口文件数据库连接池技术什么是数据库连接池数据库连接池的作用是什么?数据库连接池技术实例1、导入mysql模块2、...
    99+
    2024-04-02
  • workerman写mysql连接池的实例代码
    首先要了解为什么用连接池,连接池能为你解决什么问题 连接池主要的作用: 1、减少与数据服务器建立TCP连接三次握手及连接关闭四次挥手的开销,从而降低客户端和mysql服务端的负载,缩短请求响应时间 2、减少...
    99+
    2024-04-02
  • Spring实现HikariCP连接池的示例代码
    上两篇文章,我们讲到了Spring中如何配置单数据源和多数据源,配置数据源的时候,连接池有很多选择,在SpringBoot 1.0中使用的是Tomcat的DataSource,在Sp...
    99+
    2024-04-02
  • JDBC连接Mysql的5种方式实例总结
    目录测试环境说明第一种方式第二种方式第三种方式第四种方式第五种方式总结测试环境说明 mysql数据库:jdbc:mysql://localhost:3306/test IDE:IDE...
    99+
    2023-05-14
    jdbc连接MySQL代码 jdbc连接mysql的代码 jdbc连接mysql数据库
  • Java使用MySQL实现连接池代码实例
    官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对连接池中的连接进行申请,使用,释放。 理解:创建数据库连接池是一个很耗时的操作,也...
    99+
    2022-05-20
    Java MySQL 连接
  • Python中怎么实现MySQL连接池
    本篇文章给大家分享的是有关Python中怎么实现MySQL连接池,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python编程中可以使用MyS...
    99+
    2024-04-02
  • Java中JDBC连接池的基本原理及实现方式
    目录一、 应用程序直接建立数据库连接模型二、使用数据库连接池优化模型1、关于连接池中的连接数量的一些规定:2、编写数据库连接池创建数据库连接池:进一步封装一些相关数据库的类的方法三、...
    99+
    2024-04-02
  • Nodejs中koa2连接mysql的实现示例
    目录将查询结果转为对象或者数组mysql2的使用Prepared Statement(预处理语句)Connection Pools(连接池)Promise方式sequelizeSeq...
    99+
    2024-04-02
  • Mysql自连接查询的示例分析
    这篇文章将为大家详细讲解有关Mysql自连接查询的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。自连接查询假想以下场景:某一电商网站想要对站内产品做层级分类,一个...
    99+
    2024-04-02
  • Python实现Mysql数据库连接池实例详解
    python连接Mysql数据库: Python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接MySQL数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数...
    99+
    2022-06-04
    详解 实例 数据库
  • 基于C++实现Mysql数据库连接池实例
    目录项目技术点项目意义项目实现Connection设计ConnectionPool设计项目复杂接口细节刨析项目技术点 C语言进行mysql数据库编程无锁单例基于STL队列加C++11新特性保证线程安全实现的生产者消费者模...
    99+
    2022-12-07
    C++数据库连接池 C++mysql连接池
  • SpringBoot 整合mongoDB并自定义连接池的示例代码
    目录Maven 依赖配置文件MongoConfig配置类得力于SpringBoot的特性,整合mongoDB是很容易的,我们整合mongoDB的目的就是想用它给我们提供的mongoT...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作