当前位置: 首页 > news >正文

Alibaba Druid主要配置

Alibaba Druid主要配置

连接配置

spring.datasource.druid.initial-size 初始连接数
描述:初始连接数,初始连接数并非在应用启动后立即创建,而是首次执行SQL操作时才会初始化指定数量的物理连接;建议与min-idle一致。示例initial-size=5,应用启动后无数据库操作时连接数为0;首次执行SELECT时才会创建5个连接放入池中。

spring.datasource.druid.min-idle 最小连接数
描述:最小空闲连接,连接池在任何时刻都会保持设定的空闲连接数量,即使长时间无请求也不会销毁这些连接,避免频繁创建/销毁。

spring.datasource.druid.max-active 最大活动连接数
描述:指定连接池中允许同时存在的最大活动连接数(包括正在被使用的连接和空闲连接)。当活跃连接数达到阈值时:新请求会进入等待队列(若配置了max-wait超时时间)。若等待超时或无可用连接,抛出 SQLException(如Connection is not available)

spring.datasource.druid.max-wait 获取连接最大等待时间
描述:控制服务获取数据库连接最大等待时间参数,单位为毫秒(ms);当连接池中无可用连接时,新请求等待获取连接的最长时间:若在等待期间有连接释放,则请求成功获取连接。若超时仍无可用连接,抛出 SQLException(如 Connection is not available)

spring.datasource.druid.test-while-idle 空闲连接有效性检测
描述:当设置为true时,Druid会在连接空闲时间超过time-between-eviction-runs-millis指定的间后,通过执行validation-query(如SELECT 1)检测连接是否有效。若检测失败,连接会被标记为无效并关闭,同时连接池自动创建新连接补充至min-idle数量。

spring.datasource.druid.time-between-eviction-runs-millis 清理无效连接的检测间隔时间
描述:定义连接池后台线程(DestroyTask)扫描并清理无效连接的间隔时间;定期清理闲置连接,避免连接因超时失效后仍被使用,单位为毫秒(ms),默认值:60000(1分钟)。

spring.datasource.druid.min-evictable-idle-time-millis 空闲连接最小存活时间
描述:控制空闲连接最小存活时间(单位:毫秒);当连接的空闲时间超过此值时,可能被回收线程(DestroyTask)关闭。默认值:180000(30分钟)。需配合time-between-eviction-runs-millis(检测间隔)生效,由后台线程周期性扫描空闲连接。

spring.datasource.druid.validation-query 检测数据库连接有效性SQL
描述:指定一个轻量级SQL查询语句(如 SELECT 1),用于以下场景:
连接有效性检测:当启用test-while-idle或test-on-borrow时,通过执行该SQL验证连接是否有效。
空闲连接回收:后台线程定期扫描空闲连接,对空闲时间超阈值的连接执行该语句,失败则关闭无效连接

spring.datasource.druid.test-on-borrow 控制连接借出时有效性验证
描述:当test-on-borrow=true时,应用每次从连接池申请连接时,会同步执行validation-query(如 SELECT 1)验证连接是否有效。若验证失败,则丢弃该连接并重新申请一个新连接。(生产环境配置建议禁用)

spring.datasource.druid.test-on-return 归还连接时有效性验证
描述:当 test-on-return=true 时,应用将连接归还到连接池前,会同步执行validation-query(如 SELECT 1)验证连接是否有效。若验证失败,连接会被直接丢弃而非放回池中。(生产环境配置建议禁用)

spring.datasource.druid.pool-prepared-statements​预编译语句缓存
描述:当为true时,Druid会为每个数据库连接缓存预编译的SQL语句(PreparedStatement),避免重复编译相同 SQL,提升执行效率。默认值false

spring.datasource.druid.max-pool-prepared-statement-per-connection-size单个连接预编译语句缓存数量上限
描述:指定每个物理连接可缓存的 PreparedStatement 对象数量上限(默认值 20)。需配合pool-prepared-statements=true生效:当此值>0时,自动启用 PreparedStatement 缓存。避免相同SQL重复编译,提升高频重复查询性能(如批量操作),实测可降低 20%~30%的SQL执行时间。

spring.datasource.druid.filters 过滤器链​​
描述:指定启用的过滤器链。这些过滤器在SQL执行前后拦截操作,提供监控、安全、日志等扩展功能。如:filters: stat,wall,slf4j # 启用监控、防火墙、日志过滤器。若需使用Druid内置的SQL监控页面(如 localhost:8080/druid/sql.html),必须启用 stat 过滤器,否则无法采集SQL执行数据

spring.datasource.druid.connection-properties键值对形式传递自定义参数
描述:通过分号“;”分隔的键值对(如 key1=value1;key2=value2),向Druid内部组件传递配置参数,影响连接池行为或扩展功能

spring.datasource.druid.use-global-data-source-stat合并多个数据源监控统计
描述:用于合并多个数据源监控统计的关键配置项,主要作用是将应用中多个 DruidDataSource 实例的监控数据聚合为全局视图,便于统一分析,当应用中存在多个数据源(如主从库、多租户库)时,启用 use-global-data-source-stat: true 会将所有DruidDataSource 的统计信息(如 SQL 执行次数、耗时、连接数等)合并展示在 Druid 监控页面的“数据源”标签页下。未启用时:每个数据源独立统计,监控页面需切换不同数据源查看数据。启用后:监控页直接展示所有数据源的汇总数据,降低分析复杂度。每个 DruidDataSource 默认会创建独立的 JdbcDataSourceStat 对象收集统计信息。启用全局统计后,多个数据源共享同一个统计对象,减少内存占用和计算开销。

监控页面配置

spring.datasource.druid.stat-view-servlet.enabled 控制监控页面是否启用
描述:当设置为 true 时,Druid 会注册一个StatViewServlet,提供内置的Web监控页面(访问路径默认为 /druid/*),用于可视化查看数据库连接池状态、SQL执行统计、慢查询日志等关键信息。默认值false(禁用)。

spring.datasource.druid.stat-view-servlet.url-pattern监控页面访问路径配置
描述:该配置项指定了 Druid 监控页面的 URL 路径模式。默认值为 /druid/*,表示监控页面的根路径为 http://<服务器地址>:<端口>/druid/。例如:登录页http://localhost:8080/druid/login.html;监控页:http://localhost:8080/druid/sql.html
spring.datasource.druid.stat-view-servlet.login-username监控页面登录用户名
描述:配置监控页面登录用户名;与login-password配合使用,为监控页面(如 http://localhost:8080/druid/login.html)提供基础安全防护,防止未授权用户访问敏感数据库监控数据;未配置时默认无认证(生产环境禁用此状态),访问监控页无需登录。

spring.datasource.druid.stat-view-servlet.login-password监控页面登录密码
描述:配置监控页面登录密码,与login-username配合使用,为监控页面(如 http://localhost:8080/druid/login.html)提供基础安全防护,防止未授权用户访问敏感数据库监控数据;未配置时默认无认证(生产环境禁用此状态),访问监控页无需登录。

spring.datasource.druid.stat-view-servlet.reset-enable监控页面的重置功能开关
描述:true(默认值):启用/禁用重置功能;监控页面显示“Reset All”按钮,点击后可清空所有统计信息(如SQL执行次数、慢SQL记录、请求耗时等),数据从零开始重新计数。false:隐藏重置按钮,防止误操作导致监控数据丢失。生产环境强烈建议关闭。

Web请求统计

spring.datasource.druid.web-stat-filter.enabled启用Web请求关联SQL统计
描述:当设置为 true 时,Druid 的 WebStatFilter 会拦截所有 Web 请求,自动采集以下数据:
SQL 执行详情:包括 SQL 语句、执行次数、耗时、慢SQL记录。
请求关联数据:URL 访问路径、请求次数、Session活跃度、数据库表访问频率等。
资源过滤:通过exclusions配置排除静态资源(如JS、CSS、图片),避免无效统计
监控页面数据支撑:启用后,Druid监控页面的“URI监控”和“Session监控”标签页会显示实时数据。若未启用,这些页面将无数据。
注意!
启用监控页面:需同时设置 stat-view-servlet.enabled=true,否则无法查看统计结果。
启用SQL监控:需配置 filters: stat,否则SQL执行详情无法采集

spring.datasource.druid.web-stat-filter.url-pattern过滤器的拦截路径配置
描述:该配置指定了 Druid 的 WebStatFilter 需要拦截哪些 URL 路径的请求,以采集与数据库操作相关的统计信息(如 SQL 执行详情、请求耗时、Session 活跃度等)。默认值:/(拦截所有请求)。典型场景:需监控所有业务接口的数据库访问行为时,保持默认值即可;若需缩小范围,可调整为 /api/ 等特定路径。
关联数据采集,仅被拦截的请求才会生成以下监控数据:

  • SQL监控页:SQL 执行次数、慢 SQL 记录。
  • URI监控页:每个接口的请求次数、平均耗时、数据库表访问频率。
  • Session 监控页:用户会话的活跃时长、请求次数等(需额外启用 session-stat-enable=true)

spring.datasource.druid.web-stat-filter.exclusions静态资源排除配置
描述:指定哪些URL路径不参与数据库监控统计,例如:

  • 静态资源:*.js、*.css、*.jpg、*.ico 等。
  • 内置监控页面:/druid/*(避免监控自身请求)。
  • 健康检查接口:如 Spring Boot Actuator 的 /actuator/health

SQL性能监控

spring.datasource.druid.filter.stat.log-slow-sql启用慢 SQL记录功能
描述:当设置为 true 时,Druid会捕获执行时间超过阈值(由slow-sql-millis定义)的SQL语句,并将其输出到日志文件中。默认值:false(未启用),需手动开启。若启用log-slow-sql: true,慢SQL会输出到日志文件。

spring.datasource.druid.filter.stat.slow-sql-millis定义慢 SQL判定阈值
描述:定义慢SQL标准;当SQL执行时间超过设定阈值时,Druid会将其标记为慢SQL。默认值3000(3秒)

spring.datasource.druid.filter.stat.db-type数据库类型
描述:Druid的StatFilter需根据数据库类型(如 MySQL、Oracle)解析SQL语法,以正确统计以下信息:

  • SQL执行详情:执行次数、耗时、慢SQL识别。
  • 执行计划分析:识别 SQL 结构(如 SELECT/UPDATE)并关联性能数据。
    若未配置 db-type,可能因语法差异导致统计错误(如 Oracle 分页语句解析失败)

spring.datasource.druid.filter.stat.merge-sql是否合并统计结构相同但格式不同的SQL语句
描述:当merge-sql=true时,Druid会将语义相同但格式不同的SQL(如空格、换行符差异)合并为同一条统计记录;合并后显著降低内存占用和统计信息数量,提升监控效率,尤其在高并发场景下。

SQL防火墙

spring.datasource.druid.wall.enabled启用SQL防火墙开关
描述:当设置为true时,Druid会激活内置的WallFilter,对所有执行的 SQL 进行安全审计,拦截危险操作(如 SQL 注入、无 WHERE 的 DELETE/UPDATE、DROP TABLE 等);默认值:false。

spring.datasource.druid.wall.config.drop-table-allow 禁止删除表开关
描述:当设置为false(默认值)时:禁止执行DROP TABLE、DROP VIEW 等删表操作,防止误删或恶意删除数据库表结构。当设置为true 时:允许执行删表操作(生产环境强烈不推荐)。

spring.datasource.druid.wall.config.truncate-allow禁止清空表开关
描述:当设置为false(默认值)时禁止执行TRUNCATE TABLE操作,防止误删或恶意清空整张表的数据(该操作不可回滚,且不触发触发器)。设置为true时允许执行TRUNCATE操作(生产环境强烈不推荐)

spring.datasource.druid.wall.config.delete-allow禁止无WHERE条件的DELETE操作开关
描述:当设置为false时,Druid会拦截所有 DELETE 语句,防止误删或恶意删除数据。默认值true(允许执 DELETE语句)

spring.datasource.druid.wall.config.select-all-column-allow禁止SELECT *开关
描述:当设置为false时,Druid会拦截所有 SELECT * FROM table 这类查询语句。默认值true(允许执行 SELECT * 查询)

spring.datasource.druid.wall.config.condition-and-always-true-allow拦截永真条件开关
描述:若设置为true,允许SQL中出现 WHERE 1=1 这类条件,攻击者可能利用此特性绕过身份验证或批量窃取数据,默认值false

spring.datasource.druid.wall.config.multi-statement-allow禁止多语句执行开关
描述:控制是否允许单次请求执行多条SQL语句的安全配置项。默认值false(禁止执行多条SQL)。开启后允许通过分号;分隔执行多条SQL(如 UPDATE table1 SET …; UPDATE table2 SET …)。

spring.datasource.druid.wall.config.function-allow控制是否允许SQL语句调用数据库函数
描述:默认值false(禁止调用数据库函数);若设为 true,允许执行如SLEEP()、LOAD_FILE()、EXEC() 等敏感函数,导致以下攻击:

  • 时间盲注攻击:利用 SLEEP(5) 探测数据库结构。
  • 文件读取/写入:通过 LOAD_FILE(‘/etc/passwd’) 窃取系统文件。
  • 命令执行:调用 EXEC(‘rm -rf /’) 破坏系统(部分数据库支持)

spring.datasource.druid.wall.config.read-only-tables配置只读表
描述:通过配置表名(支持正则表达式),禁止对这些表执行 INSERT/UPDATE/DELETE 等写操作;如:read-only-tables: user, config_.* #禁止修改user表和config_前缀的表

spring.datasource.druid.wall.config.log-violation控制是否记录被拦截SQL语句
描述:默认值false(不记录拦截的 SQL)。若设置为true,当SQL语句触发防火墙规则(如执行SELECT *、永真条件 WHERE 1=1或高危操作)时,Druid会通过 LOG.error 输出详细的拦截日志。日志内容包含违规SQL、拦截原因、执行时间等信息,便于安全审计。

spring.datasource.druid.wall.config.throw-exception是否对违规SQL抛出异常
描述:默认值:true(检测到高危SQL时抛出 SQLException 阻断执行),若设置为false仅记录拦截日志(需配合 log-violation=true),不中断请求,存在安全风险。

http://www.dtcms.com/a/272572.html

相关文章:

  • 图片合并pdf
  • 新手向:实现ATM模拟系统
  • TDengine 数据库建模最佳实践
  • Oracle 视图
  • Tomcat:Java Web应用的幕后英雄
  • 线性探针是什么:是一种用于探测神经网络中特定特征的工具
  • 从零开始搭建深度学习大厦系列-3.卷积神经网络基础(5-9)
  • 李宏毅(深度学习)--(2)
  • 数据库复合索引设计:为什么等值查询列应该放在范围查询列前面?
  • 区间动态规划详解
  • 【JMeter】跨线程组传递参数
  • 在Docker中运行macOS的超方便体验!
  • SpringAI×Ollama:Java生态无缝集成本地大模型实践指南
  • Redis数据库基础概述
  • 8.2.3希尔排序
  • Spring for Apache Pulsar->Reactive Support->Message Production
  • KV Cache原理详解 + 代码理解
  • 从零实现一个GPT 【React + Express】--- 【2】实现对话流和停止生成
  • Pytest之收集用例规则与运行指定用例
  • 外贸网站模板 网页设计模板网站
  • WinUI3入门17:本地文件存储LocalApplicationData在哪里
  • 【佳易王桌球棋牌计时计费软件】:从功能到实操的全方位解析,灯控器适配、会员管理多场景,软件程序操作教程详解
  • BatchNorm解决梯度消失/爆炸
  • van-tabs 自定义
  • 08-自然壁纸实战教程-视频列表-云
  • softmax公式推导
  • 深度学习中的批处理vs小批量训练
  • 大数据时代UI前端的智能化升级:基于机器学习的用户意图预测
  • MyBatis-Plus的LambdaQuery用法
  • 【音视频】HTTP协议介绍