spring.datasource.druid.max-pool-prepared-statement-per-connection-size
时间: 2024-01-01 07:03:25 浏览: 291
`spring.datasource.druid.max-pool-prepared-statement-per-connection-size` 是用于配置 Druid 数据源中每个连接的最大预编译语句池大小的属性。预编译语句是在应用程序启动时编译的 SQL 语句,可以提高应用程序的性能。当使用连接池时,预编译语句通常会在池中被共享,以便在多个连接之间重复使用。这个属性可以用来限制每个连接中预编译语句池的大小,以避免在连接中的预编译语句过多而导致连接池的性能下降。默认值为 20。
相关问题
tomcat项目运行一段时间报错[extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed
根据提供的引用内容,错误信息表明数据源已关闭。这可能是由于以下原因之一导致的:
1. 数据库连接池中的连接已经关闭,但是应用程序仍然在尝试使用它们。
2. 数据库连接池配置不正确,导致连接池无法正常工作。
为了解决这个问题,可以尝试以下步骤:
1. 检查应用程序中是否有未关闭的数据库连接。可以使用JDBC API手动关闭连接,或者使用Spring框架等ORM工具自动管理连接。
2. 检查数据库连接池的配置是否正确。可以尝试使用默认配置,或者根据官方文档调整配置参数。
以下是一些可能有用的代码片段和参考链接:
1. 手动关闭JDBC连接的示例代码:
```java
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
// 执行SQL语句等操作
} catch (SQLException e) {
// 处理异常
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// 处理异常
}
}
}
```
2. Spring Boot中使用Druid连接池的示例配置:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/house?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
```
配置@DS 报 com.alibaba.druid.pool.DruidDataSource
这个报错通常是因为缺少 Druid 数据源的依赖,你需要在项目的 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
```
同时,你需要检查一下你的配置文件中是否正确配置了 Druid 数据源。你可以参考以下配置:
```properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# Druid 配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initial-size=5
spring.datasource.min-idle=5
spring.datasource.max-active=20
spring.datasource.max-wait=60000
spring.datasource.time-between-eviction-runs-millis=60000
spring.datasource.min-evictable-idle-time-millis=300000
spring.datasource.validation-query=SELECT 1 FROM DUAL
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=false
spring.datasource.test-on-return=false
spring.datasource.pool-prepared-statements=true
spring.datasource.max-pool-prepared-statement-per-connection-size=20
spring.datasource.filters=stat,wall,log4j
spring.datasource.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
```
阅读全文