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

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

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. 连接池配置:适当增大连接池大小

http://www.xdnf.cn/news/16859.html

相关文章:

  • 系统思考:超越线性分析
  • openwrt下安装istore(基于pve)
  • Linux网络编程【基于UDP网络通信的字典翻译服务】
  • Effective C++ 条款17:以独立语句将newed对象置入智能指针
  • 农田通量计算方法与应用;高精度感热/潜热通量反演与绘图等;农田蒸散发与能量平衡
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | QuizApp(交互式在线测验应用组件)
  • Mujoco(MuJoCo,全称Multi - Joint dynamics with Contact)一种高性能的物理引擎
  • 基于Postman进行http的请求和响应
  • linux基本系统服务——DNS服务
  • 【嵌入式汇编基础】-ARM架构基础(三)
  • 宝塔配置文件缺失导致无法正常启动
  • Java 集合框架: LinkedHashSet
  • 进程 Vs 线程
  • 【OpenGL】LearnOpenGL学习笔记01 - 环境配置、窗口创建
  • Flask + YARA-Python*实现文件扫描功能
  • 开源列式分布式数据库clickhouse
  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
  • 算法提升之数学(快速幂+逆元求法)
  • 【20min 急速入门】使用Demucs进行音轨分离
  • Redis7 String类型数据
  • 【iOS】KVO
  • MyBatisPlus之CRUD接口(IService与BaseMapper)
  • 28Rsync免密传输与定时备份
  • 关于Web前端安全防御XSS攻防的几点考虑
  • Spring Boot 全 YAML 配置 Liquibase 教程
  • C++之vector类的代码及其逻辑详解 (中)
  • DockerFile文件执行docker bulid自动构建镜像
  • CMake指令:mark_as_advanced
  • Python序列去重高级指南:保持顺序的高效去重技术