数据库批量插入耗时过长问题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 语句合并为多值语句

相关推荐
小码工作室1 小时前
使用 HAVING 进行 MySQL 集合筛选
mysql
罗超驿2 小时前
18.事务的隔离性和隔离级别:MySQL面试高频考点全解析
数据库·mysql·面试
jran-2 小时前
Redis 命令
数据库·redis·缓存
小江的记录本2 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
June`3 小时前
多线程redis下如何解决aof重写和rdb持久化的数据一致性问题
数据库·redis·缓存
木心术13 小时前
Windows系统下MySQL与AI工具集成方案:数据存储与调用实践
人工智能·windows·mysql
二宝哥3 小时前
离线安装maven
java·数据库·maven
SZLSDH3 小时前
场景适配论 | 数字孪生IOC建设中渲染技术与智能体能力的协同逻辑
前端·数据库·ai·数字孪生·数据可视化·智能体
这个DBA有点耶3 小时前
SQL改写实战:子查询、CTE、窗口函数性能对比
数据库·mysql·性能优化
@我漫长的孤独流浪3 小时前
数据库完整性约束全解析:从理论到实践
数据库