Mybatis批处理数据插入(rewriteBatchedStatements参数)

news2024/12/26 10:50:38

一、rewriteBatchedStatements参数

1、MySQL JDBC驱动在默认情况下会无视executeBatch()【也就是说JDBC默认情况下,会将你的语句分拆成单个,一条一条发给数据库执行,数据量小时感知不大,1w或10w以上差距越来越大】

2、MySQL的JDBC连接的url中要加rewriteBatchedStatements参数,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。【只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL,另外这个选项对INSERT/UPDATE/DELETE都有效】

添加rewriteBatchedStatements=true这个参数后的执行速度比较:

二、批量插入信息

2.1普通saveBatch批量插入

我们循环1万次,把每个对象装到员工集合(List)中,然后调用Mybatis-Plus的saveBatch方法,传入List集合,实现批量插入,然后我们在方法开始结束的地方,计算当前函数执行时长。

@PostMapping("/addBath")
@ResponseBody
public CommonResult<Employee> addBath(){
    long startTime = System.currentTimeMillis();
    List<Employee> list = new ArrayList<>();
    // 循环批量添加1万条数据
    for (int i = 0; i < 10000; i++) {
        Employee employee = new Employee();
        employee.setName("测试"+i);
        employee.setAge(20);
        employee.setSalary(9000D);
        employee.setDepartmentId(i);
        list.add(employee);
    }
    boolean batch = employeeService.saveBatch(list);
    if(batch){
        long endTime = System.currentTimeMillis();
        System.out.println("函数执行时间:" + (endTime - startTime) + "ms");
        return CommonResult.success();
    }
    return CommonResult.error();
}

在这里插入图片描述

批量添加1万条数据,测试结果如下:

第一次:(2秒多)
在这里插入图片描述
第二次:(接近2秒)
在这里插入图片描述
第三次:(接近2秒)
在这里插入图片描述
差不多添加1万条数据在2秒左右,这个时候我们加大量10万条,再测试:
在这里插入图片描述
批量添加10万条员工数据,测试结果如下:

第一次:(19.341 秒)
在这里插入图片描述
第二次:(18.298 秒)
在这里插入图片描述
以上为摘录出品,不过结果却是真实的,确实是这样。不过我在循环插入6w多条数据时基本都会在执行executeBatch时卡住,程序也不报错就是没反应,基本第一次遇到这种情况的会懵掉,常识来说很难排查,因为没有报错日志...

2.2设置rewriteBatchedStatements=true批量插入后

190W条数据导入,执行时间206秒还可以接受了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1271628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用Windows自带的IIS服务搭建本地站点并远程访问

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xf…

扫码听音乐该如何制作?音乐的二维码生成方法

多个音频文件怎么做成一个二维码显示&#xff1f;二维码在现在的生活中拥有丰富的使用场景&#xff0c;可以用来作为多种内容类型的载体&#xff0c;比如音频二维码就是经常被使用的一种二维码类型。通过扫秒二维码来听音频文件&#xff0c;更加的灵活方便&#xff0c;那么音频…

python中的函数定义

默认参数 注&#xff1a; 在Python中&#xff0c;print(x, and y both correct)是一条打印语句&#xff08;print statement&#xff09;&#xff0c;用于将一条消息输出到控制台或终端。它的作用是将变量x的值和字符串and y both correct同时输出到屏幕上。 在这个语句中&…

基于YOLOv8深度学习的火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Flat Ads将携6亿独家流量亮相白鲸GTC2023,在7V01展台等你

一年一度的白鲸出海全球流量大会GTC重磅来袭!今年GTC出海展区全面升级,规模扩增至15000平方米,覆盖游戏、应用、技术及品牌出海等热门行业,预计将迎来累计超30000名跨境出海相关从业者莅临参观。 Flat Ads受邀设展,现场互动100%中奖 从出海到全球化,中国互联网企业走向海外寻…

「Python编程基础」第5章:列表

文章目录 一、为什么要有列表&#xff1f;二、列表语法三、用索引获取列表中的单个值四、利用切片取得子列表五、利用len()函数&#xff0c;获取列表的长度六、利用索引改变列表中的值七、列表的连接和复制八、用del语句删除列表中的值九、有了列表后&#xff0c;真香十、列表的…

解决:uniapp项目打包微信小程序时,报错:failed to load config from /xx/xx-mall/vite.config.ts

复现步骤&#xff1a;在vscode终端中运行&#xff1a;pnpm build:mp-weixin-prod 命令&#xff0c;打包小程序生产包时&#xff0c;报错failed to load xxx/vite.config.ts&#xff0c;但实际项目根目录中有该vite.config.ts文件。 项目使用技术&#xff1a;uniapp vue3 node…

2023年第三届中国高校大数据挑战赛思路及代码

比赛时间&#xff1a;2023.12.28 08:00 至 2023.12.31 20:00 赛题方向介绍 1、大数据统计分析方向 涉及内容包含&#xff1a;数据的清洗、数据的预测、数据之间的关联分析、综合评价、分类与判别等 2、文本或图象分析方向 涉及内容包含&#xff1a;计算机视觉基础、特征匹配…

记录labelImg上手过程

一、安装 Labelimg&#xff08;目标检测标注工具&#xff09;安装_labelimg安装_向南不向北的博客-CSDN博客 二、打开 进入anaconda虚拟环境后&#xff0c;cd到labelimg文件夹&#xff0c;然后输入命令 python labelImg.py 三、基础设置 打标工具labelimg安装和使用教程-C…

前端三大MV*模式:MVC、mvvm、mvp模式介绍

MVC&#xff08;同步通信为主&#xff09;&#xff1a;Model、View、Controller MVP(异步通信为主)&#xff1a;Model、View、Presenter MVVM(异步通信为主)&#xff1a;Model、View、ViewModel mvc模式介绍 MVC&#xff08;Model–View–Controller&#xff09;模式是软件…

CCS中静态库lib的生成与调用

在调试DSP设备的时候&#xff0c;发现好多工程会把比较核心的代码生成静态库lib&#xff0c;代码运行的时候直接调用lib里面的相关函数就行。但是从外部是看不到lib库里面的内容的&#xff0c;这样通过静态库的方式实现对代码的加密。 在网上找了好久如何将函数生成静态库*.lib…

PyQt6 QToolButton工具按钮控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计32条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

python + mongodb使用入门

最近用了下mongodb &#xff0c;简单做个记录&#xff1a; 1.启动系统mongo服务 mongod -f mongod.conf其中 mongod.conf 是配置文件&#xff0c;示例如下&#xff1a; dbpath/youpath/data/db #数据库保存位置 logpath/youpath/data/mongod.log #日志 logappendtrue fo…

LeetCode刷题日志-30串联所有单词子串

最简单的思路就是&#xff0c;将words里的单词全排列&#xff0c;然后在s中比对&#xff0c;但是复杂度太高阶乘级别。 如何优化&#xff1f; 题目说明子串是包含words中所有单词&#xff0c;且任意顺序&#xff0c;我们可以使用一个map来存储words中每个单词以及对应数量&…

wyler水平仪维修WYLER倾角仪维修CH-8405

瑞士WYLER电子水平仪维修&#xff1b;BIueCLINO倾斜度测量仪维修&#xff1b;wyler电子倾角仪维修。 水平仪常见故障及处理方法 1、 仪表通电不工作。 A、检查仪表220V电源端子接线是否正确 B、检查仪表电容是否熔断&#xff1b; C、拧下仪表后的固定螺钉&#xff0c;将表…

Android笔记(十六):前台服务

设置服务为前台服务。前台服务会在状态栏显示一个通知。通知界面与服务进行关联。 一、什么是通知&#xff1f; Notification通知是在移动应用APP提供给用户的消息提示&#xff0c;是在移动系统的通知栏中显示。当移动应用不在运行时或者在后台状态下&#xff0c;通过发布通知…

Python快速实现BMI(身体质量指数)计算器(窗口界面形式)

BMI是身体质量指数&#xff08;Body Mass Index&#xff09;的缩写&#xff0c;是一种衡量人体肥胖程度的指标。它是根据人的身高和体重计算得出的&#xff0c;公式为&#xff1a; BMI 体重&#xff08;kg&#xff09;/ 身高^2&#xff08;m&#xff09; 其中&#xff0c;体…

有它再也不用PS制作企业期刊了!

随着互联网的发展&#xff0c;越来越多的人开始使用在线工具来制作企业期刊。但是&#xff0c;对于一些新手来说&#xff0c;使用PS等专业的图像处理软件可能会感到非常困难。那么&#xff0c;有没有一种简单易用的方法来制作企业期刊呢&#xff1f;答案是肯定的&#xff01; 所…

老师选班干部的方法

我经常被问到这样一个问题&#xff1a;“老师&#xff0c;你怎么选班干部的&#xff1f;”那我就来分享一下我的经验吧&#xff0c;希望能给广大教师朋友提供一些参考。 选班干部之前先要明确一点&#xff0c;班干部是做什么的&#xff1f;有什么职责。班干部是班级的核心力量&…

什么是gRPC

gRPC&#xff08;gRPC Remote Procedure Call&#xff09;是由 Google 开发的开源 RPC 框架&#xff0c;它基于 HTTP/2 标准&#xff0c;使用 Protocol Buffers 作为接口定义语言&#xff08;IDL&#xff09;。gRPC 提供了一种高效、跨语言、跨平台的远程过程调用&#xff08;R…