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

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.lryc.cn/news/608162.html

相关文章:

  • SM2国密算法的大数运算原理详解
  • 牛客 - 旋转数组的最小数字
  • 【PCL点云库:下】
  • 详解Python标准库之互联网数据处理
  • 一个物理引擎仿真器(mujoco这种)的计算流程
  • 回溯 79 单词搜索一波三折想和
  • 中科院开源HYPIR图像复原大模型:1.7秒,老照片变8K画质
  • 深入剖析Nacos:云原生架构的基石
  • JVM 02 垃圾回收
  • 【LeetCode 热题 100】(三)滑动窗口
  • file命令libmagic、python的cchardet库使用、自定义magic文件的使用
  • 【Spring Boot 快速入门】五、文件上传
  • Python 入门指南:从零基础到环境搭建
  • Qt 信号和槽正常连接返回true,但发送信号后槽函数无响应问题【已解决】
  • AI原生数据库:告别SQL的新时代来了?
  • 飞书推送工具-自动化测试发送测试报告一种方式
  • Linux 动静态库的制作和使用
  • [硬件电路-121]:模拟电路 - 信号处理电路 - 模拟电路中常见的难题
  • FastAPI--一个快速的 Python Web
  • 网络安全突发事件应急预案方案
  • 2024年网络安全预防
  • 电脑手机热点方式通信(上)
  • 智能手表:小恐龙游戏
  • Linux自主实现shell
  • C#开发入门指南_学习笔记
  • Ubuntu系统VScode实现opencv(c++)图像翻转和旋转
  • Java 注解详解(含底层原理)
  • Vue 3.0 Composition API:重新定义组件逻辑的组织方式
  • 算法训练营DAY46 第九章 动态规划part13
  • 全球化 2.0 | 中国香港教育机构通过云轴科技ZStack实现VMware替代