druid配置详解

druid配置详解
最新回答
上帝的女孩

2023-06-30 08:30:21

Druid配置详解

Druid是一个开源的数据库连接池,它提供了强大的监控和扩展功能。以下是Druid配置的详细解释:

1. 基本连接信息

  • url:数据库的JDBC连接地址。根据所使用的数亩简据库类型(如Oracle、MySQL等),连接地址的格式会有所不同。例如,MySQL的连接地址格式通常为jdbc:mysql://ip:port/dbname?option1&option2&…,而Oracle的连接地址格式通常为jdbc:oracle:thin:@ip:port:oracle_sid。

  • username:登录数据库的用户名。

  • password:登录数据库的用户密码。

2. 初始化与连接池管理

  • initialSize:启动程序时,在连接池中初始化的连接数量。建议值范围为10-50,这取决于应用程序的初始负载和数据库的性能。

  • maxActive:连接池中最多支持的活动会话数量。这个值应该根据应用程序的并发需求和数据库的处理能力来设置。

  • maxWait:程序向连接池中请求连接时,如果连接池中没有可用连接,则等待的时间(单位毫秒)。如果设置为-1,则表示无限等待。为了避免应用程序因等待连接而阻塞,建议设置一个合理的超时时间。

3. 空闲连接管理

  • minEvictableIdleTimeMillis:池中某个连接的空闲时长达到N毫秒后,连接池在下次检查空闲连接时,将回收该连接。这个值应该小于防火墙的超时设置(如net.netfilter.nf_conntrack_tcp_timeout_established),以避免防火墙关闭空闲连接而导致连接池中的连接失效。

  • timeBetweenEvictionRunsMillis:检查空闲连接的频率(单位毫秒)。如果设置为非正整数,则表示不进行空闲连接检查。为了保持连接池中的连接有效,建议设置一个合理的检查频率。

  • minIdle:回收空闲连接时,将保证至少有minIdle个连接。这个值通常与initialSize相同,以确保连接池在启动时就有足够的空闲连接可用。

4. 连接回收与超时管理

  • removeAbandoned:要求程序从池中获取连接后,必须在N秒后关闭连接。如果程序未能在规定时间内关闭连接,Druid将强制回收该连接。这有助于防止程序因忘记关闭连接而占用连接池资源。建议设置为true,但需要注意与removeAbandonedTimeout的配合。

  • removeAbandonedTimeout:Druid强制回收连接的时限(单位秒)。这个值应该大于业务运行的最长时迟陆间,以确保在业务运行期间不会因超时而被强制回收连接。

  • logAbandoned:当Druid强制回收连接后,是否将stack trace记录到日志中。建议设置为true,以便在出现问题时能够追踪和定位原因。

5. 连接有效性检查

  • testWhileIdle:当程序请求连接时,池在分配连接前是否先检查该连接是否有效。设置为true可以提高连接的有效性,但可能会增加一些性能开销。建议根据应用程序的需求和数据库的性能来设置。

  • validationQuery:检查池中的连接是否仍可用的SQL语句。Druid会连接到数据库执行该SQL语句,如果正常返回,则表示连接可用;否则表示连接不可用。这个值应该根据所使用的数据库类型来设置。

  • testOnBorrow:程序申请连接时,是否进行连接有效性检查。设置为true可以确保每次从连接池中获取的连接都是有效的,但可能会影响性能。建议根据应用程序的需求和数据库的性能来设置。

  • testOnReturn:程序返还连接时,是否进行连接有效性检查码耐顷。同样地,设置为true可以确保每次归还到连接池的连接都是有效的,但也会影响性能。建议根据实际需求来设置。

6. SQL语句缓存

  • poolPreparedStatements:是否缓存通过prepareStatement方法发起的SQL语句。设置为true可以提高SQL语句的执行效率,但可能会增加内存开销。建议根据应用程序的需求和数据库的性能来设置。

  • maxPoolPrepareStatementPerConnectionSize:每个连接最多缓存多少个SQL语句。这个值应该根据应用程序的SQL执行频率和数据库的性能来设置。

7. 插件配置

  • filters:这里配置的是Druid的插件。常用的插件有stat(监控统计)、wall(防御SQL注入)、log4j或slf4j(日志监控)等。通过配置这些插件,可以增强Druid的功能和安全性。

8. 连接属性

  • connectProperties:连接属性,用于设置一些连接池统计和数据库连接属性。例如,druid.stat.mergeSql=true表示合并统计的SQL语句;druid.stat.slowSqlMillis=5000表示将执行时间超过5000毫秒的SQL语句视为慢查询。此外,还可以设置一些数据库连接属性,如字符集、时区等。

综上所述,Druid的配置涉及多个方面,包括基本连接信息、初始化与连接池管理、空闲连接管理、连接回收与超时管理、连接有效性检查、SQL语句缓存、插件配置以及连接属性等。在配置Druid时,需要根据应用程序的需求和数据库的性能来合理设置这些参数,以确保连接池的高效、稳定和安全。