数据库配置范例

一 MySQL 配置范例

数据库配置(文件dbcp.properties)如下

########DBCP##########
driverClassName=com.mysql.cj.jdbc.Driver
#url
url=jdbc:mysql://ip:3306/iidp?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username=username
password=password
initialSize=5
maxActive=500
minIdle=5
maxWait=6000
filters=stat
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
poolPreparedStatements: true
maxOpenPreparedStatements: 20
keepAlive=true

二 Oracle 配置范例

数据库配置(文件dbcp.properties)如下

########Oracle########
driverClassName=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@ip:1521:SMOMDB
username=root
password=123456
validationQuery=SELECT 'x' FROM DUAL
initialSize=5
maxActive=30
minIdle=5
maxWait=6000
filters=stat
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=select 1 from dual
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
poolPreparedStatements: true
maxOpenPreparedStatements: 20

三 PostgreSQL 配置范例

  1. DBCP 配置
########postgresql########
driverClassName=org.postgresql.Driver
url=jdbc:postgresql://xxx.xxx.120:5432/postgres?currentSchema=public&encoding=UTF-8&timezone=UTC
username=postgres
password=******
initialSize=5
maxActive=500
minIdle=5
maxWait=6000
filters=stat
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=select 1
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
poolPreparedStatements: true
maxOpenPreparedStatements: 20
keepAlive=true

四 OceanBase 配置范例

1. JDBC 连接配置调整

JDBC 连接示例

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:oceanbase://xxx.xxx.xxx.xxx:3306/test?rewriteBatchedStatements=TRUE&allowMultiQueries=TRUE&useLocalSessionState=TRUE&useUnicode=TRUE&characterEncoding=utf-8&socketTimeout=10000&connectTimeout=30000
username=root
password=******
initialSize=5
maxActive=500
minIdle=5
maxWait=6000
filters=stat
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=select 1
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
poolPreparedStatements: true
maxOpenPreparedStatements: 20
keepAlive=true
  • allowMultiQueries:默认为 FALSE,必须设置为 TRUE,以允许使用分号连接的多语句文本格式。对使用文本协议的场景,只需开启此配置即可实现批量优化。
  • rewriteBatchedStatements:默认为 FALSE,若使用 PS 协议,则必须设置为 TRUE,以在执行 executeBatch() 时将多条语句改写为分号连接的多语句格式。

特例说明:开启 rewriteBatchedStatements 后,对于多条 multi queries 插入语句(无论使用文本协议或 PS 协议),JDBC 驱动会将其改写为一条 Multi Values Insert 语句。

相关参数说明

  • rewriteBatchedStatements:建议设置为 TRUE,以提高批量插入的性能。
  • allowMultiQueries:建议设置为 TRUE,允许使用分号连接的多语句文本格式。
  • useLocalSessionState:建议设置为 TRUE,避免频繁向 OB 数据库发送 session 变量查询 SQL。
  • socketTimeout:执行 SQL 时,socket 等待 SQL 返回的时间。
  • connectTimeout:建立连接时,等待连接的时间。
  • useCursorFetch:建议设置为 TRUE,适用于大数据量查询。
  • useServerPrepStms:控制是否使用 PS 协议发送 SQL。
  • cachePrepStmts:控制是否开启 PS cache,避免重复执行 prepare。
  • prepStmtCacheSQLLimit:可放入 PS cache 的 SQL 长度限制。
  • prepStmtCacheSize:PS cache 可保存的 SQL 数量。
  • maxBatchTotalParamsNum:针对 batch 操作,一条 SQL 最多支持的参数个数。

2. 本地 JDBC连接 OceanBase

dbcp.properties添加oceanbase配置

########OceanBase########
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://xxx.xxx.xxx.xxx:2881/snest?rewriteBatchedStatements=TRUE&allowMultiQueries=TRUE&useLocalSessionState=TRUE&useUnicode=TRUE&characterEncoding=utf-8&socketTimeout=10000&connectTimeout=30000&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
username=root
password=******
validationQuery=SELECT 1

五 GaussDB 配置范例

JDBC配置:

1. dbcp.properties 示例:

########DBCP##########
initialSize=5
maxActive=500
minIdle=5
filters=stat
maxWait=6000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=1800000
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
poolPreparedStatements: true
maxOpenPreparedStatements: 20
connectionProperties:druid.stat.sql.MaxSize=100;
keepAlive=true


########gaussdb########
driverClassName=com.huawei.gaussdb.jdbc.Driver
url=jdbc:gaussdb://127.0.0.1:8000,127.0.0.1:8000,127.0.0.1:8000/tpcc?currentSchema=snest_jichen&autoBalance=true&refreshCNIpListTime=3&prepareThreshold=1&batchMode=on&fetchsize=10&loggerLevel=OFF
username=******
password=******
validationQuery=SELECT 1
gaussdbDeployment=Distributed

2. spring配置文件添加参数适配高斯自定义SQL列字段别名转换

正常不需要添加这个配置,除非项目特殊需要.

application-dev.properties添加:

orm.sql.wrap_camelcase_alias=true

六 Vastbase(海量数据库) 配置范例

Vastbase 海量数据库基本上兼容Postgres SQL,所以SQL语法和Postgres一样,可以直接把Vastbase作为Postgres使用.

JDBC配置:

1 默认兼容模型

########DBCP##########
initialSize=5
maxActive=500
minIdle=5
filters=stat
maxWait=6000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=1800000
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
validationQuery=SELECT 1
poolPreparedStatements: true
maxOpenPreparedStatements: 20
connectionProperties:druid.stat.sql.MaxSize=100;
keepAlive=true

########vastbase##########
driverClassName=cn.com.vastbase.Driver
url=jdbc:vastbase://ip:25432/snest?currentSchema=snest_changwen
username=root
password=******

2 MySQL兼容模型

vastbase数据库访问
数据库:snest_tpcc 	端口:25434		用户名:snest_changwen

########DBCP##########
driverClassName=cn.com.vastbase.Driver
url=jdbc:vastbase://ip:25434/snest_tpcc?currentSchema=snest_changwen&db_compatibility=mysql
username=root
password=******
dbCompatibility=mysql
keepAlive=true

七 Dameng(国产达梦数据库) 配置范例

配置数据库连接信息 在 dbcp.properties 配置连接信息如下:

########DBCP##########
initialSize=5
maxActive=500
minIdle=5
filters=stat
maxWait=6000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=1800000
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
validationQuery=select 1 from dual
poolPreparedStatements: true
maxOpenPreparedStatements: 20
connectionProperties:druid.stat.sql.MaxSize=100;
keepAlive=true

########dameng##########
driverClassName=dm.jdbc.driver.DmDriver
url=jdbc:dm://ip:30236/IIDP_DEMO
username=SYSDBA
password=SYSDBA001

八 数据库连接池配置参数详解表

📊 通用连接池配置参数(适用于所有数据库)

参数名 默认值 推荐值 说明 影响
driverClassName - 按数据库定 JDBC驱动类全名 必须正确,否则无法连接
url - 按数据库定 数据库连接URL 连接地址、端口、数据库名
username - - 数据库用户名 认证信息
password - - 数据库密码 认证信息
initialSize 0 5-10 初始连接数 启动速度、初始性能
maxActive 8 30-2000 最大活动连接数 最大并发处理能力
maxIdle 8 同maxActive 最大空闲连接数 资源占用
minIdle 0 5-10 最小空闲连接数 保持"热"连接数量
maxWait 无限 3000-10000ms 获取连接最大等待时间 请求响应时间、超时控制
validationQuery - SELECT 1等 连接验证SQL 连接有效性检查
testOnBorrow true false 获取连接时验证 性能vs可靠性
testOnReturn false false 归还连接时验证 性能开销
testWhileIdle false true 空闲时验证 连接健康检查
timeBetweenEvictionRunsMillis -1 60000ms 回收线程运行间隔 连接回收频率
minEvictableIdleTimeMillis 30min 300000ms 连接最小空闲时间 连接存活时间
numTestsPerEvictionRun 3 3 每次检查连接数 回收效率
poolPreparedStatements false true 缓存PreparedStatement SQL执行性能
maxOpenPreparedStatements -1 20-100 最大缓存PS数 内存占用
removeAbandoned false true 移除泄露连接 防连接泄露
removeAbandonedTimeout 300 180s 泄露连接超时时间 连接泄露检测灵敏度
logAbandoned false true 记录泄露日志 问题排查
connectionProperties - 各种优化参数 连接属性设置 性能优化

🔧 数据库特有配置

1. 连接验证SQL(validationQuery)

数据库 推荐验证SQL 说明
MySQL SELECT 1 最简单高效
Oracle SELECT 'x' FROM DUALSELECT 1 FROM DUAL 必须FROM DUAL
PostgreSQL SELECT 1  
SQL Server SELECT 1  
DB2 SELECT 1 FROM SYSIBM.SYSDUMMY1  
达梦 SELECT 1 FROM DUAL 类似Oracle
GaussDB SELECT 1  
OceanBase SELECT 1 兼容MySQL
Vastbase SELECT 1 兼容PostgreSQL

2. JDBC驱动类(driverClassName)

数据库 驱动类 备注
MySQL com.mysql.cj.jdbc.Driver 8.0+用cj
Oracle oracle.jdbc.OracleDriver  
PostgreSQL org.postgresql.Driver  
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver  
DB2 com.ibm.db2.jcc.DB2Driver  
达梦 dm.jdbc.driver.DmDriver  
GaussDB com.huawei.gaussdb.jdbc.Driver  
OceanBase com.mysql.cj.jdbc.Drivercom.oceanbase.jdbc.Driver  
Vastbase cn.com.vastbase.Driverorg.postgresql.Driver  

3. URL格式示例

数据库 URL格式示例
MySQL jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=UTF-8
Oracle jdbc:oracle:thin:@//host:1521/service_name
PostgreSQL jdbc:postgresql://host:5432/db?currentSchema=schema
SQL Server jdbc:sqlserver://host:1433;databaseName=db
达梦 jdbc:dm://host:5236/database
GaussDB jdbc:gaussdb://host:8000/db
OceanBase jdbc:oceanbase://host:2881/db

⚡ 性能调优推荐配置

应用类型配置建议

应用类型 initialSize maxActive minIdle 说明
小型应用 5 20 5 低并发,简单业务
Web应用 10 50 10 中等并发
高并发应用 20 200-2000 20 电商、交易系统
批处理应用 根据批次大小 200-2000 根据需求 大数据处理
微服务 5 30 5 多实例部署

关键参数调优表

参数 调优目标 调优方法 监控指标
maxActive 平衡并发与资源 监控连接使用率,设峰值的120% ActiveCount峰值
maxWait 减少超时 根据业务容忍时间设置 获取连接超时次数
minEvictableIdleTimeMillis 减少创建开销 设为平均空闲时间的1.5倍 连接创建频率
timeBetweenEvictionRunsMillis 及时回收 设为连接平均空闲时间的1/3 空闲连接数
testWhileIdle 保证健康 必须开启,配合validationQuery 连接失效次数

🚨 环境监控参数

# 1. 连接泄露检测(必须)
removeAbandoned=true
removeAbandonedTimeout=180
logAbandoned=true

# 2. 连接健康检查(必须)
testWhileIdle=true
validationQuery=SELECT 1
timeBetweenEvictionRunsMillis=30000

# 3. 超时控制(必须)
maxWait=10000
connectionTimeout=30000
socketTimeout=60000

# 4. 监控统计(建议)
filters=stat,wall
connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000

📈 配置验证检查表

检查项 标准 说明
连接泄漏 removeAbandoned=true 防止连接未关闭
连接验证 testWhileIdle=true 定期检查连接健康
超时设置 maxWait < 10000ms 避免长时间等待
验证SQL 数据库对应正确SQL 确保验证有效
连接数合理 maxActive ≤ 数据库max_connections 不超过数据库限制
空闲连接 minIdle ≥ 初始并发需求 保证基本性能

这个表格可以作为所有数据库连接池配置的通用参考指南。