MySQL PostgreSQL JDBC URL 配置允许批量操作

发布于:2025-08-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

MySQL

MySQL 中使用 MyBatis 进行批量操作时,通过配置 JDBC URL 参数可以显著提高性能。以下是 MySQL 专用的批量操作优化配置:

jdbc:mysql://localhost:3306/your_database?
useServerPrepStmts=true&
cachePrepStmts=true&
prepStmtCacheSize=250&
prepStmtCacheSqlLimit=2048&
rewriteBatchedStatements=true&
useCompression=true&
allowMultiQueries=true

参数详细说明

  1. rewriteBatchedStatements (最重要)

    • 值: true/false

    • 作用: 将批量操作重写为更高效的格式

    • 效果: 提高批量插入性能 5-10 倍

    • 示例: rewriteBatchedStatements=true

  2. useServerPrepStmts

    • 值: true/false

    • 作用: 启用服务器端预处理语句

    • 推荐值: true

  3. cachePrepStmts

    • 值: true/false

    • 作用: 缓存预处理语句

    • 需要与 useServerPrepStmts=true 配合使用

  4. prepStmtCacheSize

    • 值: 整数 (推荐 250-500)

    • 作用: 预处理语句缓存大小

  5. prepStmtCacheSqlLimit

    • 值: 整数 (推荐 2048)

    • 作用: 缓存 SQL 的最大长度

  6. allowMultiQueries

    • 值: true/false

    • 作用: 允许一次执行多条SQL语句(用分号分隔)

  7. MySQL服务器配置

[mysqld]
max_allowed_packet=256M  # 增大允许的数据包大小
innodb_buffer_pool_size=4G  # 增大InnoDB缓冲池

PostgreSQL

PostgreSQL 中,JDBC 连接 URL 可以通过添加特定参数来优化批量操作性能。以下是相关配置:

jdbc:postgresql://localhost:5432/your_database?
rewriteBatchedInserts=true&
reWriteBatchedInserts=true&
defaultRowFetchSize=100&
preparedStatementCacheQueries=256&
preparedStatementCacheSizeMiB=5

关键参数说明

  1. rewriteBatchedInserts (最重要)

    • 值: true/false

    • 作用: 将批量插入重写为更高效的格式

    • 示例: rewriteBatchedInserts=true

    • 效果: 可以提高批量插入性能 2-3 倍

  2. reWriteBatchedInserts (同上,旧版驱动使用)

    • 同 rewriteBatchedInserts,用于向后兼容

  3. batchSize

    • 值: 整数 (如 100, 500)

    • 作用: 指定每批处理的语句数量

  4. defaultRowFetchSize

    • 值: 整数

    • 作用: 设置默认每次从数据库获取的行数


性能优化建议

  1. 批量大小:每批 500-1000 条记录性能最佳

  2. 事务控制:确保批量操作在单个事务中完成

  3. 连接池配置:适当增大连接池大小