数据库连接池 您所在的位置:网站首页 svn常用的几个操作 数据库连接池

数据库连接池

2023-05-17 12:10| 来源: 网络整理| 查看: 265

一.简介

数据库连接池是一种用于管理数据库连接的技术,主要用于提高数据库访问的性能和可扩展性。当一个应用程序需要访问数据库时,它通常会建立一个数据库连接,执行相应的操作后,关闭该连接。如果在短时间内需要多次访问数据库,那么建立和关闭数据库连接的开销会很大,同时也会占用数据库服务器的资源。

连接池的作用就是预先建立一定数量的数据库连接,并将这些连接缓存起来,当应用程序需要访问数据库时,直接从连接池中获取一个可用的连接,并在使用完毕后将其释放回连接池,而不是每次都重新建立和关闭连接。这样可以减少连接的创建和关闭开销,提高数据库访问的性能和可扩展性。

 使用连接池可省略灰色部分的流程

连接池通常包含以下几个部分:

连接池管理器:管理连接池的创建、初始化、销毁等操作。

连接池:包含一组数据库连接,并负责对这些连接进行管理,包括分配和释放连接等操作。

连接对象:表示与数据库建立的连接,包括连接参数、状态等信息。

连接池状态监控:用于监控连接池的状态和性能指标,以及检测连接池中的异常连接等情况。

常见的Java连接池有:

Apache Commons DBCP:由Apache软件基金会开发的连接池,具有较好的稳定性和性能,支持连接池缓存和预处理语句等功能。

C3P0:一款开源的连接池实现,具有较好的稳定性和可靠性,支持连接池缓存和自动管理连接等功能。性能略差。

HikariCP:一款轻量级的高性能连接池,具有快速启动和快速恢复等特点,适合高并发场景。

Druid:阿里巴巴开源的连接池,具有监控和统计、自动关闭空闲连接、可扩展的插件等功能。

使用连接池可以提高应用程序的性能和可靠性,减少数据库连接的建立和断开开销,减少数据库负载,同时也可以有效地避免一些数据库连接的错误。

二.如何使用

在Spring Boot中,可以通过在pom.xml文件中添加相关的依赖来使用数据库连接池。常用的数据库连接池有Apache Commons DBCP、HikariCP和Tomcat JDBC等,其中HikariCP是目前性能最好的连接池,也是Spring Boot 2.x默认的连接池。

在Spring Boot中,可以使用application.properties或application.yml配置文件来配置数据源和连接池。以下是一个application.properties文件的示例:

spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver //驱动程序类名 spring.datasource.type=com.zaxxer.hikari.HikariDataSource //连接池类型 spring.datasource.hikari.maximum-pool-size=10 //最大连接数

连接池具体参数:

最大连接数(maxActive):连接池中最大连接数,超过此数的连接将被阻塞。一般来说,应该根据数据库的最大连接数来设置此值,避免因连接过多导致数据库出现性能问题。

最小空闲连接数(minIdle):连接池中最小空闲连接数,当连接池中的连接数少于此数时,连接池会创建新的连接。

最大空闲连接数(maxIdle):连接池中最大空闲连接数,当连接池中的连接数超过此数时,多余的连接将被关闭。

连接最大空闲时间(maxIdleTime):连接在池中保持空闲的最大时间,超过此时间的空闲连接将被关闭。此参数可以避免因为长时间没有使用而导致的连接失效。

连接最大生存时间(maxLifetime):连接在池中最大的生存时间,超过此时间的连接将被关闭。此参数可以避免因为长时间运行而导致的连接失效。

等待连接超时时间(maxWaitTime):连接池中没有空闲连接时,获取连接的等待时间,超过此时间会抛出异常。

验证连接是否可用(testOnBorrow):连接是否可用的验证方式,如果设置为true,每次从连接池中获取连接时都会验证连接是否可用。如果验证失败,则连接池会尝试创建新的连接。

验证连接是否可回收(testOnReturn):连接是否可回收的验证方式,如果设置为true,每次将连接放回连接池时都会验证连接是否可用。如果验证失败,则连接池会尝试创建新的连接。

druid连接池配置

datasource: druid: # Druid连接池监控配置 stat-view-servlet: # 是否开启Druid连接池监控功能,默认为false,设置为true时开启。 enabled: true # Druid监控页面登录用户名。 loginUsername: admin # Druid监控页面登录密码。 loginPassword: 123456 dynamic: # 动态数据源配置 druid: # 连接池初始化大小。 initial-size: 5 # 连接池最小空闲连接数 min-idle: 5 # 连接池最大连接数 maxActive: 20 # 连接池获取连接的最大等待时间,单位为毫秒 maxWait: 60000 # 空闲连接检测周期,单位为毫秒 timeBetweenEvictionRunsMillis: 60000 # 连接空闲时间,超过该时间的空闲连接将被回收。 minEvictableIdleTimeMillis: 300000 # 用于检测连接是否有效的SQL语句。 validationQuery: SELECT 1 FROM DUAL # 是否在空闲时检查连接的可用性。 testWhileIdle: true # testOnBorrow: 是否在获取连接时检查连接的可用性。 testOnBorrow: false # 是否在归还连接时检查连接的可用性。 testOnReturn: false # 是否缓存PreparedStatement。 poolPreparedStatements: true # 缓存PreparedStatement的最大数量。 maxPoolPreparedStatementPerConnectionSize: 20 # 连接池拦截器,可以对连接池的连接进行监控、统计和防御SQL注入攻击等。 filters: stat,wall,slf4j # 连接池的其他属性配置,比如是否合并SQL、慢查询的阈值等。 connectionProperties: druid.stargeSql\=true;druid.stat.slowSqlMillis\=5000



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有