MySQL JDBC连接池如何配置连接超时

764
2024/10/10 18:32:07
栏目: 云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在MySQL JDBC连接池中,您可以通过设置connectionTimeout参数来配置连接超时。以下是如何在不同的连接池库中配置连接超时的示例:

  1. HikariCP:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("username");
config.setPassword("password");
config.setConnectionTimeout(30000); // 设置连接超时为30秒
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

HikariDataSource ds = new HikariDataSource(config);
  1. Apache DBCP2:
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("username");
dataSource.setPassword("password");
dataSource.setConnectionTimeout(30000); // 设置连接超时为30秒
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(true);
dataSource.setTestWhileIdle(true);
dataSource.setTimeBetweenEvictionRunsMillis(60000);

Connection connection = dataSource.getConnection();
  1. C3P0:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUser("username");
dataSource.setPassword("password");
dataSource.setConnectionTimeout(30000); // 设置连接超时为30秒
dataSource.setMinPoolSize(5);
dataSource.setMaxPoolSize(20);
dataSource.setMaxStatements(50);
dataSource.setIdleConnectionTestPeriod(3000);

Connection connection = dataSource.getConnection();

请注意,这些示例中的connectionTimeout值是以毫秒为单位的。根据您的需求调整该值。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: mysql回表查询优化的方法是什么