首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

druid配置mysql连接池

Druid 是一个高性能的数据库连接池,它提供了监控和统计功能,能够有效地管理和优化数据库连接。以下是关于 Druid 配置 MySQL 连接池的基础概念、优势、类型、应用场景以及常见问题解答。

基础概念

Druid 连接池通过预先创建一定数量的数据库连接,减少了应用程序在运行时创建和销毁连接的开销,从而提高了数据库访问的性能和效率。

优势

  1. 高性能:Druid 通过内置的算法优化了连接的分配和使用,减少了等待时间。
  2. 监控和统计:提供了丰富的监控指标,如连接数、SQL 执行时间等,便于性能调优。
  3. 安全性:支持密码加密、IP 白名单等安全特性。
  4. 扩展性:易于集成到各种框架中,如 Spring、Spring Boot 等。

类型

Druid 连接池主要分为两种类型:

  1. 普通连接池:适用于大多数场景。
  2. PSCache 连接池:支持查询结果缓存,适用于读多写少的场景。

应用场景

Druid 连接池广泛应用于各种需要高效数据库访问的应用中,如 Web 应用、大数据处理、实时分析等。

配置示例

以下是一个简单的 Druid 配置 MySQL 连接池的示例:

代码语言:txt
复制
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class DruidConfig {

    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        dataSource.setInitialSize(5);
        dataSource.setMinIdle(5);
        dataSource.setMaxActive(20);
        dataSource.setMaxWait(60000);
        dataSource.setTimeBetweenEvictionRunsMillis(60000);
        dataSource.setMinEvictableIdleTimeMillis(300000);
        dataSource.setValidationQuery("SELECT 1");
        dataSource.setTestWhileIdle(true);
        dataSource.setTestOnBorrow(false);
        dataSource.setTestOnReturn(false);
        dataSource.setPoolPreparedStatements(true);
        dataSource.setMaxPoolPreparedStatementPerConnectionSize(20);
        return dataSource;
    }
}

常见问题解答

问题:为什么连接池中的连接数不足?

原因

  1. 最大连接数设置过低:检查 setMaxActive 配置项,确保其值足够大。
  2. 连接泄露:某些连接未被正确释放,导致连接池中的连接被耗尽。

解决方法

  1. 增加 setMaxActive 的值。
  2. 确保所有数据库操作都正确释放连接,可以使用 try-with-resources 语句。

问题:为什么连接池中的连接长时间空闲?

原因

  1. 最小空闲连接数设置过高:检查 setMinIdle 配置项,确保其值合理。
  2. 应用负载较低:应用访问数据库的频率较低,导致连接长时间空闲。

解决方法

  1. 调整 setMinIdle 的值,使其与应用负载相匹配。
  2. 如果应用负载确实较低,可以考虑减少连接池的大小。

问题:如何监控连接池的状态?

解决方法

Druid 提供了内置的监控页面,可以通过配置 StatFilterWallFilter 来启用监控功能。配置示例如下:

代码语言:txt
复制
@Bean
public Filter statFilter() {
    StatFilter statFilter = new StatFilter();
    statFilter.setSlowSqlMillis(1000);
    statFilter.setLogSlowSql(true);
    statFilter.setMergeSql(true);
    return statFilter;
}

@Bean
public Filter wallFilter() {
    WallFilter wallFilter = new WallFilter();
    wallFilter.setConfig(wallConfig());
    return wallFilter;
}

@Bean
public WallConfig wallConfig() {
    WallConfig config = new WallConfig();
    config.setSelectAllow(false);
    config.setUpdateAllow(false);
    config.setInsertAllow(false);
    config.setDeleteAllow(false);
    return config;
}

然后在 application.properties 中启用 Druid 监控页面:

代码语言:txt
复制
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=false
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

通过访问 /druid 路径,可以查看连接池的实时监控数据。

参考链接

Druid 官方文档

Spring Boot 集成 Druid 示例

希望以上信息对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Druid MySQL连接池本地实践

但是考虑到稳定性测试当中,持续时间非常久,自定义的功能缺少自愈能力,最终还是选择了使用已有成熟的 MySQL 连接池工具,经过几番对比,最后选择了 Druid 。...Druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目,为监控而生,内置强大的监控功能,且监控特性不影响性能。Druid连接池功能强大,性能优越,使用占比高,是一款优秀的数据库连接池。...扩展性: Druid连接池支持多种数据库类型,并可以方便地扩展支持新的数据库类型。 Druid连接池的使用非常简单,只需几行代码即可配置和使用,是Java应用开发中不可多得的利器。...Druid配置项 上面例子中我们采取先创建 com.alibaba.druid.pool.DruidDataSource 对象,然后进行配置项设置。...连接池常用的配置参数,在配置时可以根据项目实际情况进行调整。

24610
  • Druid连接池的基本配置与使用

    Druid简介 Druid是阿里巴巴的开源连接池组件,是世界上最好的连接池之一。Druid能对数据库连接进行有效管理和重用,最大化程序执行的效率。连接池负责创建和管理连接,程序只负责取用与归还。...以下是我画的示意图:  下面我来给大家介绍一下Druid的基本配置与使用,需要你有JDBC基础。可以跟着敲一下体验体验。  ...maven导入,百度搜索Druid就能找到GitHub的页面,在里面的中文帮助里有提示) 2.然后再项目的src目录下创建一个druid-config.properties的配置文件 3.在属性配置文件中配置如下...: driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/files username=root password...这里这是一个简单的Druid连接池案例,算是入门连接池了。但Druid的功能肯定不止如此啦,还要继续学习啊。谢谢大家的关注。有什么问题评论区见。

    2.2K40

    spring cloud 配置中心配置哪些东西_druid连接池配置优化

    走进Spring Cloud之九 高可用配置中心(Greenwich版本) Config加入Eureka服务治理 前面我们演示的案例是我们有一个Config Server 和一个 Config Client...,我们的Config Client直接从Config Server读取配置,这里九存在一个比较严重的耦合问题,假如我们的单一的Config Server挂掉了的IP或者端口变化了,我们Config Client...将无法读取配置。...这样我们的微服务应用就可以通过配置中心的服务名来获取配置信息,这种方式比起传统的实现模式来说更加有利于维护,因为对于服务端的负载均衡配置和客户端的配置中心指定都通过服务治理机制一并解决了,既实现了高可用...如果配置中心使用的是本地存储,则该参数无用 discovery: service-id: config-server #指定配置中心的service-id,便于扩展为高可用配置集群。

    82120

    javalite 使用druid数据库连接池配置

    然后还要在web.xml中添加druid的Servlet 用于展现监控的静态页面,注意的是这里需要设置用户名密码以及客户端的ip,一般设置为只能本机访问,更多详细的配置参考 StatViewServlet...配置 在 app.config.DbConfig 类中配置数据源 因为项目中没有引入spring来实现bean的自动管理,所以我们这里需要自己把 com.alibaba.druid.pool.DruidDataSource...,并把配置文件中的值设置到 DruidDataSource 当中,这个文件的内容如下 druid.url = jdbc:mysql://192.168.2.113:3306/jhbims?...= jhbims druid.driverClassName = com.mysql.jdbc.Driver druid.initialSize = 5 druid.minIdle = 3 druid.maxActive...= 100 drud.maxWait = 1000 druid.testOnBorrow = true druid.filters = stat,wall 这个文件的更多配置见 DruidDataSource

    1.3K10

    delphi 数据库连接池-MySQL之数据库连接池Druid

    ,这些连接可以重复使用,降低数据资源的消耗   Druid   Druid是阿里巴巴开发的号称为监控而生的数据库连接池Druid是目前最好的数据库连接池。   ...Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验   Druid地址:   Druid常用的配置参数    刚启动连接池时,连接池中包含连接的数量    连接池中最多可以放多少个连接...   获取连接时最大等待时间,单位毫秒(超时则报错)   Druid连接池使用步骤   1.导入druid-1.0.0.jar的jar包   2.编辑druid.   3.加载文件的内容到对象中   ...4.创建Druid连接池delphi 数据库连接池,使用配置文件中的参数   5.从Druid连接池中取出连接   6.执行SQL语句   7.关闭资源    public static...")); //创建Druid连接池,使用配置文件中的参数 DataSource dataSource = DruidDataSourceFactory.createDataSource

    2.9K40
    领券