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

达梦数据库连接配置yaml 文件配置

一、添加依赖(Maven/Gradle)

首先需要在项目中引入 Druid 连接池和达梦数据库的 JDBC 驱动依赖。

1. Maven 配置(pom.xml)

xml

<!-- Druid连接池 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.18</version> <!-- 版本可根据最新稳定版调整 -->
</dependency><!-- 达梦数据库JDBC驱动(需自行提供,或从达梦安装目录获取) -->
<dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId> <!-- 达梦驱动版本,如18对应DM8 --><version>8.1.2.141</version> <!-- 版本需与数据库版本匹配 -->
</dependency>
2. Gradle 配置(build.gradle)

groovy

// Druid连接池
implementation 'com.alibaba:druid-spring-boot-starter:1.2.18'// 达梦JDBC驱动
implementation 'com.dameng:DmJdbcDriver18:8.1.2.141'

二、核心配置(Spring Boot 环境)

在 application.yml 或 application.properties 中配置 Druid 连接池参数,重点包括数据库连接信息和连接池自身参数。

1. YAML 格式(application.yml)
spring:datasource:# 一、基础数据库连接信息(达梦数据库适配)url: jdbc:dm://localhost:5236/TEST_DB?characterEncoding=utf-8&rewriteBatchedStatements=true# 达梦URL格式:jdbc:dm://主机IP:端口/数据库名,附加参数说明:# - characterEncoding=utf-8:指定字符编码# - rewriteBatchedStatements=true:开启批量操作优化(提升批量插入/更新性能)username: SYSDBA  # 达梦数据库登录用户名(默认管理员用户)password: SYSDBA  # 数据库密码(需根据实际环境修改)driver-class-name: dm.jdbc.driver.DmDriver  # 达梦JDBC驱动类名(固定值,DM8对应此驱动)# 二、Druid连接池核心配置(前缀:spring.datasource.druid)druid:# 1. 连接池初始化与并发控制initial-size: 5  # 启动时初始化的连接数(建议:根据最小并发量设置,如5-10)max-active: 50   # 最大活跃连接数(核心参数!需 ≤ 数据库允许的最大连接数,达梦默认MAX_SESSIONS=1000)min-idle: 5      # 最小空闲连接数(保证空闲时仍有连接可用,避免频繁创建连接)max-wait: 60000  # 连接等待超时时间(毫秒),超过此时间则抛出异常(避免无限等待)# 2. 连接有效性验证(防止连接失效导致的报错)validation-query: SELECT 1  # 验证连接是否有效的SQL语句(达梦支持简单SQL:SELECT 1 或 SELECT COUNT(*) FROM DUAL)validation-query-timeout: 3000  # 验证SQL的超时时间(毫秒)test-while-idle: true  # 空闲时自动验证连接有效性(推荐开启,避免空闲连接失效)test-on-borrow: false  # 申请连接时验证(建议关闭,否则每次申请都执行SQL,损耗性能)test-on-return: false  # 归还连接时验证(建议关闭,同理损耗性能)test-on-connect: false # 建立连接时验证(建议关闭,初始化时会额外消耗资源)# 3. 连接回收与超时控制time-between-eviction-runs-millis: 60000  # 连接回收线程的执行间隔(毫秒),默认60秒min-evictable-idle-time-millis: 300000    # 连接最小空闲时间(毫秒),超过此时间则被回收(默认5分钟)max-evictable-idle-time-millis: 600000    # 连接最大空闲时间(毫秒),超过此时间强制回收(默认10分钟)remove-abandoned: true  # 启用连接泄漏检测(推荐开启,防止连接未关闭导致泄漏)remove-abandoned-timeout: 1800  # 连接泄漏超时时间(秒),超过此时间未使用则强制关闭log-abandoned: true     # 记录连接泄漏的日志(便于排查泄漏原因)# 4. SQL预处理语句缓存(提升重复SQL执行效率)pool-prepared-statements: true  # 启用预处理语句池(PSCache)max-pool-prepared-statement-per-connection-size: 20  # 每个连接的最大预处理语句缓存数量share-prepared-statements: true  # 多个连接共享预处理语句(仅当pool-prepared-statements=true时生效)# 5. 过滤功能配置(监控、安全、日志等)filters: stat,wall,log4j2,config  # 启用的过滤器,多个用逗号分隔# 过滤器说明:# - stat:监控统计(收集连接池状态、SQL执行耗时等)# - wall:防SQL注入(拦截恶意SQL,保护数据库安全)# - log4j2:日志记录(输出SQL执行日志,需配合log4j2依赖)# - config:读取配置文件(支持动态调整参数)filter:# 针对wall过滤器的细化配置(防SQL注入)wall:enabled: truedb-type: dm  # 指定数据库类型为达梦(避免过滤规则不兼容)config:delete-allow: true  # 允许DELETE语句drop-table-allow: false  # 禁止DROP TABLE语句(防止误删表)multi-statement-allow: false  # 禁止多语句执行(避免批量注入)# 针对stat过滤器的细化配置(监控统计)stat:slow-sql-millis: 2000  # 慢SQL阈值(毫秒),超过此时间的SQL会被标记为慢SQLlog-slow-sql: true     # 记录慢SQL日志(便于优化)merge-sql: true        # 合并相同SQL的统计结果(避免重复统计)# 6. Web监控配置(Druid内置监控页面)web-stat-filter:enabled: true  # 启用Web请求监控(统计每个URL的SQL执行情况)url-pattern: /*  # 监控所有URL路径exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"  # 排除静态资源和监控页面自身session-stat-enable: true  # 启用会话统计session-stat-max-count: 1000  # 最大会话统计数量(超过则清理旧会话)# 监控页面配置(访问路径:http://localhost:端口/druid)stat-view-servlet:enabled: true  # 启用监控页面url-pattern: /druid/*  # 监控页面访问路径login-username: admin  # 监控页面登录用户名(生产环境建议修改为复杂账号)login-password: 123456  # 监控页面登录密码(生产环境必须修改!)reset-enable: false  # 禁止重置监控数据(防止误操作)allow: 127.0.0.1,192.168.1.0/24  # 允许访问监控页面的IP(白名单,生产环境严格限制)deny: 192.168.1.100  # 禁止访问的IP(黑名单)# 7. 密码加密配置(生产环境推荐,避免明文密码泄露)# 说明:使用Druid提供的加密工具对密码加密后,配置如下参数connection-properties: config.decrypt=true;config.decrypt.key=你的公钥  # 启用解密,指定公钥filter.config.enabled: true  # 启用配置过滤器(用于解密密码)# 8. 其他高级配置async-close-connection-enable: true  # 异步关闭连接(提升连接关闭效率,减少阻塞)use-unfair-lock: true  # 使用非公平锁(提升高并发下的连接获取效率)fail-fast: true  # 快速失败机制(连接池初始化失败时立即抛出异常,避免静默失败)
2. Properties 格式(application.properties)
# 达梦数据库连接信息
spring.datasource.url=jdbc:dm://localhost:5236/数据库名?characterEncoding=utf-8
spring.datasource.username=SYSDBA
spring.datasource.password=SYSDBA
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver# Druid连接池配置
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
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,log4j2# 监控配置
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=druid
spring.datasource.druid.stat-view-servlet.reset-enable=false

关键参数调优建议

  1. 并发相关参数

    • max-active:根据应用峰值并发量设置,建议为峰值的 1.2~1.5 倍,且不超过数据库最大连接数(达梦可通过 SELECT * FROM V$PARAMETER WHERE NAME = 'MAX_SESSIONS' 查询)。
    • initial-size 和 min-idle:避免设置过大(浪费资源),一般为 max-active 的 10%~20%。
  2. 连接有效性验证

    • 必须开启 test-while-idle,否则长时间空闲的连接可能因数据库主动断开而失效,导致应用报错。
    • validation-query 需使用数据库支持的简单 SQL(达梦推荐 SELECT 1,执行效率最高)。
  3. 生产环境安全配置

    • 务必修改监控页面的 login-username 和 login-password,并通过 allow 参数限制访问 IP。
    • 启用密码加密功能,避免配置文件中出现明文密码(加密工具可通过 Druid 依赖包中的 com.alibaba.druid.filter.config.ConfigTools 类生成公钥和加密密码)。
  4. 日志与监控

    • 开启 log-slow-sql 便于定位慢查询,结合监控页面的 “SQL 监控” 模块优化 SQL。
    • 避免开启 test-on-borrow 和 test-on-return,否则会显著降低性能。

依赖补充

若启用 log4j2 过滤器,需在 pom.xml 中添加日志依赖(避免过滤器初始化失败):

xml

<!-- log4j2 日志依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

通过以上配置,可实现 Druid 连接池的稳定运行、全面监控和安全防护,适配达梦数据库的生产环境需求。

示例:

# 数据源配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: dm.jdbc.driver.DmDriverdruid:# 主库数据源master:url: jdbc:dm://localhost:5236/username: SYSDBApassword: SYSDBA# 从库数据源slave:# 从数据源开关/默认关闭enabled: falseurl: username: password: # 初始连接数initialSize: 5# 最小连接池数量minIdle: 10# 最大连接池数量maxActive: 20# 配置获取连接等待超时的时间maxWait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 300000# 配置一个连接在池中最大生存的时间,单位是毫秒maxEvictableIdleTimeMillis: 900000# 配置检测连接是否有效validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsewebStatFilter: enabled: truestatViewServlet:enabled: true# 设置白名单,不填则允许所有访问allow:url-pattern: /druid/*# 控制台管理用户名和密码login-username: ruoyilogin-password: 123456filter:stat:enabled: true# 慢SQL记录log-slow-sql: trueslow-sql-millis: 1000merge-sql: truewall:config:multi-statement-allow: true

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

相关文章:

  • 做头像网站静态中国四大软件外包公司是哪四个
  • 观成科技:蔓灵花攻击事件分析
  • 芯谷科技--高性能LED恒流驱动器,点亮智能照明新时代D3815C
  • 湖南粒界教育科技有限公司:专注影视职业教育,AI辅助教学提升学习实效
  • Spring Boot Actuator应用信息Application Information全解析
  • 怎么给我 的网站做关键词南昌seo网站建设
  • [linux仓库]信号处理[进程信号·伍]
  • 从零掌握 Pandas:数据分析的黄金钥匙|01:认识Pandas
  • 网站建设和技术服务合同范本推广方式有哪些?
  • 在百度上做公司网站得多少钱网站怎么建设微信支付宝支付功能
  • 西安做网站天猫优惠券网站怎么做的
  • 开源 Linux 服务器与中间件(十一)Emqx服务器消息的订阅和发送(mqtt测试)
  • express中间件(java拦截器)
  • [人工智能-大模型-57]:模型层技术 - 软件开发的不同层面(如底层系统、中间件、应用层等),算法的类型、设计目标和实现方式存在显著差异。
  • RHEL_2_部署 chrony服务器
  • 视频分析软件机动车识别
  • 中间件面试题
  • 中间件实现任务去重与精细化分发:设计模式与常见陷阱
  • (补)CNN 模型搭建与训练:PyTorch 实战 CIFAR10 任务的应用
  • spring篇:一文读懂spring:工作原理之核心技术解析
  • docker 原理
  • 龙岩网站开发较好的公司王战山
  • vllm论文中figure3每个块的区别
  • 西安营销网站建设公司厦门建设局官网
  • 机器视觉的锂电池叠片应用
  • Rhino(犀牛)转换为 3DXML 全指南:迪威模型网在线实操 + 本地方案
  • react报错Cannot find module ‘ajv/dist/compile/codegen‘
  • uv如何配置阿里云源在 pyproject.toml 中 或在 uv.toml 中
  • 【算法】排序算法汇总1
  • 学习笔记 | 图论基础