druid.max-pool-prepared-statement-per-connection-size
时间: 2023-12-23 17:03:14 浏览: 160
`druid.max-pool-prepared-statement-per-connection-size` 是 Druid 数据源中的一个配置项,用于设置每个数据库连接池中预编译语句缓存的大小。预编译语句是一种经过预处理后可以多次执行的 SQL 语句。在高并发的场景下,预编译语句的使用可以提高数据库的性能。
该配置项的默认值为 -1,表示不限制。如果设置为正整数 n,则每个连接池最多缓存 n 个预编译语句。当缓存满时,新的预编译语句将会覆盖旧的预编译语句。需要注意的是,预编译语句的缓存是基于每个连接池的,因此如果应用程序同时使用多个连接池,每个连接池都会有自己的预编译语句缓存。
相关问题
spring.datasource.druid.max-pool-prepared-statement-per-connection-size
`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
```