iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >数据库连接池(Druid(德鲁伊))
  • 135
分享到

数据库连接池(Druid(德鲁伊))

数据库javasql 2023-09-14 13:09:11 135人浏览 独家记忆
摘要

JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤 在主程序(如servlet、beans)中建立数据库连接 进行sql操作 断开数据库连接   这种模式开发,存在的问题: 普通的JDBC数据库连

JDBC数据库连接池的必要性

在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤

在主程序(如servlet、beans)中建立数据库连接

进行sql操作

断开数据库连接  

这种模式开发,存在的问题:

普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求 一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。数据库的连接资源并没有得到很 好的重复利用。若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严 重的甚至会造成服务器的崩溃。

对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统 中的内存泄漏,最终将导致重启数据库。(回忆:何为Java的内存泄漏?)

这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内 存泄漏,服务器崩溃。

 数据库连接池技术

为解决传统开发中的数据库连接问题,可以采用数据库连接池技术。 数据库连接池的基本思想:就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要 建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重 新建立一个。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库 连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池 的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连 接数量时,这些请求将被加入到等待队列中。

 

工作原理: 

 

数据库连接池技术的优点

1. 资源重用 由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销。在减少系统消耗的基础上,另一 方面也增加了系统运行环境的平稳性。

2. 更快的系统反应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于连接池中备用。此时连接的初始化工作均 已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销, 从而减少了系统的响应时间

3. 新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接池的配置,实现某一应用最大可用数据库 连接数的限制,避免某一应用独占所有的数据库资源

4. 统一的连接管理,避免数据库连接泄漏 在较为完善的数据库连接池实现中,可根据预先的占用超时设定,强制回收被占用连接,从而避免了常规数据 库连接操作中可能出现的资源泄露

多种开源的数据库连接池

JDBC 的数据库连接池使用 javax.sql.DataSource 来表示,DataSource 只是一个接口,该接口通常由服务器(Weblogic, WebSphere, Tomcat)提供实现,也有一些开源组织提供实现:

DBCP 是Apache提供的数据库连接池。tomcat 服务器自带dbcp数据库连接池。速度相对c3p0较快,但因 自身存在BUG,Hibernate3已不再提供支持。

C3P0 是一个开源组织提供的一个数据库连接池,速度相对较慢,稳定性还可以。hibernate官方推荐使用

Proxool 是sourceforge下的一个开源项目数据库连接池,有监控连接池状态的功能,稳定性较c3p0差一 点

BoneCP 是一个开源组织提供的数据库连接池,速度快

Druid 是阿里提供的数据库连接池,据说是集DBCP 、C3P0 、Proxool 优点于一身的数据库连接池,但是 速度不确定是否有BoneCP快

DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接 池

DataSource用来取代DriverManager来获取Connection,获取速度快,同时可以大幅度提高数据库访问速 度。 特别注意:数据源和数据库连接不同,数据源无需创建多个,它是产生数据库连接的工厂,因此整个应用只需要一个 数据源即可。

当数据库访问结束后,程序还是像以前一样关闭数据库连接:conn.close(); 但conn.close()并没有关闭数 据库的物理连接,它仅仅把数据库连接释放,归还给了数据库连接池。

Druid(德鲁伊)数据库连接池

Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、Proxool等DB池的优点,同时加入了 日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,可以说是目前最好的 连接池之一。

public class TestDruid { public static void main(String[] args) throws Exception {Properties pro = new Properties(); pro.load(TestDruid.class.getClassLoader().getResourceAsStream("druid.properties")); DataSource ds = DruidDataSourceFactory.createDataSource(pro); Connection conn = ds.getConnection(); System.out.println(conn); }}

 

url=jdbc:Mysql://localhost:3306/test?rewriteBatchedStatements=trueusername=rootpassWord=123456driverClassName=com.mysql.jdbc.DriverinitialSize=10maxActive=20maxWait=1000filters=wall

来源地址:https://blog.csdn.net/m0_62436868/article/details/127470489

--结束END--

本文标题: 数据库连接池(Druid(德鲁伊))

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库连接池(Druid(德鲁伊))
    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤 在主程序(如servlet、beans)中建立数据库连接 进行sql操作 断开数据库连接   这种模式开发,存在的问题: 普通的JDBC数据库连...
    99+
    2023-09-14
    数据库 java sql
  • 浅谈一下数据库连接池Druid德鲁伊
    目录JDBC数据库连接池的必要性 数据库连接池技术工作原理: 数据库连接池技术的优点多种开源的数据库连接池Druid(德鲁伊)数据库连接池JDBC数据库连接池的必...
    99+
    2023-05-19
    数据库连接池 Druid 数据库连接池德鲁伊
  • 数据库连接池druid参数详解
    spring: datasource: druid: # 指定数据源类型为DruidDataSource type: com.alibaba.druid.pool.DruidDataSource # 数...
    99+
    2023-09-02
    数据库 java mybatis
  • 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...
    99+
    2024-04-02
  • Druid数据库连接池如何使用
    这篇文章主要介绍了Druid数据库连接池如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Druid数据库连接池如何使用文章都会有所收获,下面我们一起来看看吧。概述数据库连接池是个容器,负责分配、管理数据库...
    99+
    2023-07-05
  • 数据库连接池Druid与Hikari对比详解
    目录Druid竞品对比Hikari 官方性能测试数据对比总结Druid竞品对比 功能类别功能DruidHikariCPDBCPTomcat-jdbcC3P0性能PSCache是否是是是LRU是否是是是SLB负载均衡支持...
    99+
    2023-02-02
    数据库连接池选DruidHikar 数据库连接池
  • 如何在SpringBoot 中使用 Druid 数据库连接池
    目录1.Maven中的pom文件2.SpringBoot 配置文件3.配置Druid数据源实例4.过滤器和Servlet5.使用@ServletComponentScan注解,6.D...
    99+
    2024-04-02
  • 怎么在SpringBoot中使用Druid数据库连接池
    这篇文章主要介绍怎么在SpringBoot中使用Druid数据库连接池,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Druid是阿里开源的一款数据库连接池,除了常规的连接池功能外,它还提供了强大的监控和扩展功能。这对...
    99+
    2023-06-14
  • Java实现数据连接池Druid举例
    目录开篇Druid的调试参考开篇 Druid号称是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。作为日常使用较多的数据库连接组件,纯粹个人兴趣研究下理解下的实现...
    99+
    2024-04-02
  • Java数据库连接池Druid的配置参数有哪些
    这篇文章主要介绍“Java数据库连接池Druid的配置参数有哪些”,在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据库连接池D...
    99+
    2023-06-25
  • springboot项目整合druid数据库连接池的实现
    Druid连接池是阿里巴巴开源的数据库连接池项目,后来贡献给Apache开源; Druid的作用是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再...
    99+
    2024-04-02
  • SpringBoot整合Druid实现数据库连接池和监控
    目录1、Druid的简介2、创建SpringBoot项目与数据表2.1 创建项目2.2 创建数据表3、Druid实现数据库连接池3.1 Druid的配置3.2 创建实体类(Entit...
    99+
    2024-04-02
  • 使用druid如何实现配置数据库连接池
    本篇文章为大家展示了使用druid如何实现配置数据库连接池 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。druid的配置项如下配置缺省值说明name 配置这个属性的意义在于,如果存在多个...
    99+
    2023-05-31
    数据库连接池 druid
  • springboot druid数据库连接池连接失败后一直重连怎么解决
    这篇文章主要介绍了springboot druid数据库连接池连接失败后一直重连怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot druid数据库连接池连接失败后一...
    99+
    2023-06-30
  • 如何在springboot项目中使用druid数据库连接池
    如何在springboot项目中使用druid数据库连接池?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Druid连接池是阿里巴巴开源的数据库连接池项目,后来贡献给Apac...
    99+
    2023-06-14
  • DBUtils数据库连接池
    使用数据库连接池技术,可以重复使用多个数据库连接,避免每次执行数据库操作都建立连接和关闭连接,也避免了大型应用同时占用多个数据库连接。 以连接mysql为例 import pymysql from DBUtils.PooledDB i...
    99+
    2023-01-31
    数据库 连接池 DBUtils
  • 使用Spring Boot如何实现集成Druid数据库连接池
    使用Spring Boot如何实现集成Druid数据库连接池?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 前言Druid数据库连接池由阿里巴巴开源,号称是java语言...
    99+
    2023-05-31
    springboot 数据库连接池 druid
  • springboot使用alibaba的druid数据库连接池错误如何解决
    本篇内容介绍了“springboot使用alibaba的druid数据库连接池错误如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用...
    99+
    2023-07-05
  • spring cloud 配置阿里数据库连接池 druid的示例代码
    1.配置pom <!-- druid 数据库连接池 --> <dependency> <groupId>com.alibaba...
    99+
    2024-04-02
  • 关于node+mysql数据库连接池连接
     mysql有两种连接方式:一种是直接连接 另一种是池化连接,我们这篇讲的是池化连接。 为了让解惑,我简答的写份直接连接的代码,如下: var mysql = requi...
    99+
    2023-05-16
    node+mysql node连接mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作