数据库连接池

目录

1.数据库连接池

2.没有使用数据库连接池

3.数据库连接池的原理

4.演示Druid数据库连接池的使用

1. 数据库连接配置

2. 连接池配置


1.数据库连接池

数据库连接池是一种数据库连接的管理方式,它让系统在数据库上保持一定数量的连接,当系统有访问数据库的请求时,可以快速地从连接池中获取一个数据库连接来用,用完后再返回给连接池,而不是再次创建一个新的数据库连接

数据库连接池是个容器,负责分配、管理数据库连接(Connection)。

数据库连接池有以下优点:

  1. 提高连接效率:因为不需要每次请求数据库时都重新建立连接,所以连接速度更快。
  2. 节省资源:由于连接是复用的,可以节省系统资源,例如减少内存的使用。
  3. 减少连接次数:减少了频繁建立和关闭连接的次数,可以减轻数据库服务器的压力。
  4. 改善系统响应时间:由于连接建立的时间减少,请求数据库的响应时间也会减少。

数据库连接池的缺点包括:

  1. 增加了系统的复杂性:需要对连接池进行管理和配置,例如控制最小和最大连接数,处理空闲连接的回收等。
  2. 可能出现资源泄露:如果没有合适的监控和管理,连接池可能会导致系统资源泄露,例如内存泄露。

2.没有使用数据库连接池


客户端执行SQL语句:要先创建一个新的连接对象,然后执行SQL语句,SQL语句执行后又需要关闭连接对象从而释放资源,每次执行SQL时都需要创建连接、销毁链接,这种频繁的重复创建销毁的过程是比较耗费计算机的性能。


 

3.数据库连接池的原理

程序在启动时,会在数据库连接池(容器)中,创建一定数量的Connection对象
允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。


客户端在执行SQL时,先从连接池中获取一个Connection对象,然后在执行SQL语句,SQL语句
执行完之后,释放Connection时就会把Connection对象归还给连接池(Connection对象可以复用)

数据库连接池是如何知道用户长时间没有使用Conllection对象的?


释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
客户端获取到Connection对象了,但是Connection对象并没有去访问数据库(处于空闲),数据
库连接池发现Connection对象的空闲时间 > 连接池中预设的最大空闲时间,此时数据库连接池
就会自动释放掉这个连接对象

常见的数据库连接池:
C3P0
DBCP
Druid
Hikari (springboot默认)
现在使用更多的是:Hikari、Druid(性能更优越)

4.演示Druid数据库连接池的使用

1.SpringBoot项目就引入依赖

<dependency>
<!-- Druid连接池依赖 -->
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>

2.在Springboot项目配置

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/mydb
      username: root
      password: secret
      driver-class-name: com.mysql.cj.jdbc.Driver
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 30000
      min-evictable-idle-time-millis: 60000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true

参数说明:

1. 数据库连接配置

  • urljdbc:mysql://localhost:3306/mydb

    • 数据库的 JDBC URL,指定了数据库的位置和要连接的数据库名称。
  • usernameroot

    • 连接数据库时使用的用户名。
  • passwordsecret

    • 连接数据库时使用的密码。
  • driver-class-namecom.mysql.cj.jdbc.Driver

    • JDBC 驱动的类名,用于连接 MySQL 数据库。

2. 连接池配置

  • initial-size5

    • 连接池初始化时创建的连接数。这个参数决定了连接池在启动时创建的初始连接数。
  • min-idle5

    • 连接池中最小的空闲连接数。即使连接池中没有请求,连接池也会保持至少 min-idle 个空闲连接。
  • max-active20

    • 连接池中允许的最大活跃连接数。当连接池中活跃连接的数量达到这个值时,后续的连接请求会被阻塞或抛出异常。
  • max-wait60000

    • 连接池中获取连接的最大等待时间(单位:毫秒)。如果在这个时间内没有获取到连接,将抛出异常。
  • time-between-eviction-runs-millis30000

    • 定期检测连接池中的空闲连接的间隔时间(单位:毫秒)。这个参数指定了空闲连接检测的频率。
  • min-evictable-idle-time-millis60000

    • 空闲连接的最小生存时间(单位:毫秒)。连接在空闲状态下保持的最短时间,低于这个时间的空闲连接会被移除。
  • test-while-idletrue

    • 是否在空闲连接时进行测试。如果为 true,连接池在检测空闲连接时会验证连接是否有效。可以防止返回无效的连接。
  • test-on-borrowfalse

    • 是否在获取连接时进行测试。如果为 true,连接池会在借出连接前进行测试,确保连接有效。
  • test-on-returnfalse

    • 是否在归还连接时进行测试。如果为 true,连接池会在连接被归还时进行测试,确保连接有效。
  • pool-prepared-statementstrue

    • 是否启用 PreparedStatement 的池化。如果为 true,连接池会池化 PreparedStatement 对象,从而提高性能。

这些配置参数可以帮助你根据具体的应用需求和数据库负载调整 Druid 连接池的行为,以优化性能和稳定性。

相关推荐

  1. 数据库连接】01:连接初始化

    2024-07-23 09:36:02       58 阅读
  2. JDBC数据库连接

    2024-07-23 09:36:02       63 阅读
  3. C++数据库连接

    2024-07-23 09:36:02       53 阅读
  4. 【JDBC】数据库连接

    2024-07-23 09:36:02       31 阅读
  5. 数据库连接

    2024-07-23 09:36:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 09:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 09:36:02       102 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 09:36:02       83 阅读
  4. Python语言-面向对象

    2024-07-23 09:36:02       92 阅读

热门阅读

  1. RKNN执行bash ./build-linux_RK3566_RK3568.sh 报错

    2024-07-23 09:36:02       22 阅读
  2. 数学建模--图论与最短路径

    2024-07-23 09:36:02       21 阅读
  3. mariadb安装在服务器(Linux)

    2024-07-23 09:36:02       24 阅读
  4. 银行卡二三四要素核验的多种应用场景

    2024-07-23 09:36:02       28 阅读
  5. 怎么在 Ubuntu 中卸载已经安装的软件

    2024-07-23 09:36:02       23 阅读
  6. ubuntu 源码安装postgis插件

    2024-07-23 09:36:02       28 阅读
  7. SpringCloud-Zuul-03

    2024-07-23 09:36:02       27 阅读
  8. uniapp picker-view 搜索选择框

    2024-07-23 09:36:02       25 阅读
  9. 前端面试题

    2024-07-23 09:36:02       21 阅读