数据库批量插入耗时过长问题rewriteBatchedStatements=true

文章目录


前言

今天在维护一个小项目时,发现使用mybatisplus批量插入10000条数据,耗时30秒。看了一下配置文件,发现mysql配置中没有添加rewriteBatchedStatements=true

yml 复制代码
rewriteBatchedStatements=true

完整配置

yml 复制代码
spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
     username: root
     password: 123456
     driver-class-name: com.mysql.cj.jdbc.Driver

参数说明

  1. 基础连接参数
    useUnicode=true - 启用 Unicode 字符集支持
    characterEncoding=utf-8 - 设置字符编码为 UTF-8
  2. 日期时间处理
    zeroDateTimeBehavior=convertToNull - 当遇到零日期时间值时转换为 NULL,避免解析异常
  3. 布尔类型处理
    transformedBitIsBoolean=true - 将 BIT 类型字段转换为布尔类型
  4. 多查询支持
    allowMultiQueries=true - 允许在单个语句中执行多个 SQL 查询
  5. 安全相关
    useSSL=false - 禁用 SSL 连接(开发环境常用)
    allowPublicKeyRetrieval=true - 允许公钥检索(MySQL 8.0+ 必需)
  6. 性能优化
    rewriteBatchedStatements=true - 重写批处理语句以提高性能,将多条 INSERT/UPDATE 语句合并为多值语句

相关推荐
sg_knight2 小时前
SQL 中的 IFNULL 函数是什么?
数据库·sql·mysql·oracle·database·关系型数据库·db
程序员黄老师2 小时前
一分钟了解时序数据库(TSDB)
大数据·数据库·时序数据库
你才是臭弟弟2 小时前
时序数据库TDengine TSDB(安装/介绍)
数据库·时序数据库·tdengine
正在走向自律2 小时前
从“可用”到“好用”:金仓时序数据库开发者体验深度测评与二次开发生态搭建指南
数据库·时序数据库·金仓数据库
1.14(java)2 小时前
事务操作全解析:ACID特性与实战技巧
数据库·事务·acid特性
熊文豪2 小时前
国产化替代浪潮下:金仓时序数据库的破局之路
数据库·时序数据库·金仓数据库
DBA小马哥2 小时前
时序数据库InfluxDB迁移替换:痛点剖析与解决方案
运维·数据库·时序数据库·dba
早日退休!!!2 小时前
数据库高并发技术:核心原理与工程实践
数据库
信创天地2 小时前
信创环境下数据库与中间件监控实战:指标采集、工具应用与告警体系构建
java·运维·数据库·安全·elk·华为·中间件