当前位置: 首页 > 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.dtcms.com/a/311488.html

相关文章:

  • C语言输入安全10大边界漏洞解析与防御
  • 基于LSTM模型与加权链路预测的动态热门商品成长性分析
  • SpringBoot相关注解
  • 项目管理平台是什么?概念、定义、作用、主流厂商解读
  • docker:将python开发的大模型应用,打成docker容器
  • C#中的除法
  • PostGIS面试题及详细答案120道之 (081-090 )
  • cuda编程笔记(12)--学习cuFFT的简单使用
  • 【Mybatis】MyBatis分页的三种实现方式,Log4j的使用
  • Elasticsearch 混合检索一句 `retriever.rrf`,把语义召回与关键词召回融合到极致
  • 模拟激光相机工作站版本6.0 5.2.32 6.0.44 6.031 5.2.20
  • 题解:P4447 [AHOI2018初中组] 分组
  • 归并排序(简单讲解)
  • [论文阅读] 人工智能 + 软件工程 | GitHub Marketplace中CI Actions的功能冗余与演化规律研究
  • 【RK3568 看门狗驱动开发详解】
  • Kubernetes Gateway API 详解:现代流量路由管理方案
  • 【最后203篇系列】030 强化学习探索
  • 浏览器及java读取ros1的topic
  • 重生之我在暑假学习微服务第八天《OpenFeign篇》
  • 暑期算法训练.13
  • cv弹窗,退款确认弹窗
  • 数据结构(12)二叉树
  • 深入 Go 底层原理(六):垃圾回收(GC)
  • 数据资产是什么?
  • MySQL 内置函数
  • npm安装下载慢问题
  • 离线安装docker和docker-compose
  • 【人工智能agent】--服务器部署PaddleX 的 印章文本识别模型
  • JVM 调优中JVM的参数如何起到调优动作?具体案例,G1GC垃圾收集器参数调整建议
  • Junit5+Maven+RestAssured+Allure接口自动化框架