Druid 是一个高性能的数据库连接池,它提供了监控和统计功能,能够有效地管理和优化数据库连接。以下是关于 Druid 配置 MySQL 连接池的基础概念、优势、类型、应用场景以及常见问题解答。
Druid 连接池通过预先创建一定数量的数据库连接,减少了应用程序在运行时创建和销毁连接的开销,从而提高了数据库访问的性能和效率。
Druid 连接池主要分为两种类型:
Druid 连接池广泛应用于各种需要高效数据库访问的应用中,如 Web 应用、大数据处理、实时分析等。
以下是一个简单的 Druid 配置 MySQL 连接池的示例:
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;
}
}
原因:
setMaxActive
配置项,确保其值足够大。解决方法:
setMaxActive
的值。原因:
setMinIdle
配置项,确保其值合理。解决方法:
setMinIdle
的值,使其与应用负载相匹配。解决方法:
Druid 提供了内置的监控页面,可以通过配置 StatFilter
和 WallFilter
来启用监控功能。配置示例如下:
@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 监控页面:
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
路径,可以查看连接池的实时监控数据。
希望以上信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云