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

一、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.hqwc.cn/news/233959.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloudAlibaba微服务 【实用篇】| Nacos配置管理

目录 一&#xff1a;Nacos配置管理 1. 统一配置管理 2. 配置热更新 3. 配置共享 4. 搭建Nacos集群 tips&#xff1a;前些天突然发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c;感兴趣的同学可以进…

内网穿透的应用-如何部署Tale博客并结合cpolar内网穿透发布个人站点到公网访问

Linux系统部署Tale个人博客并发布到公网访问 文章目录 Linux系统部署Tale个人博客并发布到公网访问前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale…

内测分发平台应用的异地容灾和负载均衡处理和实现思路

内测分发平台应用的异地容灾和负载均衡处理和实现思路 ​ 内测分发平台在软件开发过程中起着至关重要的作用&#xff0c;它不仅可以帮助开发者将应用程序传播给内部测试人员&#xff0c;还可以收集反馈、跟踪错误并改进产品。然而&#xff0c;为了确保一个平稳、连贯的内测过…

决策树(Classification and Regression Tree)

学了数据结构的树后&#xff0c;一直没发现树有哪些应用。学而时习&#xff08;实践&#xff09;之&#xff0c;不亦说乎&#xff1f;故特地上网查了查树的应用&#xff0c;在下阐释&#xff1a; 1.文件系统&#xff1a;文件和目录的组织通常以树的形式表示&#xff0c;允许高效…

怎样搭建好Google关键词广告账号结构

搭建好Google关键词广告账号结构对于实现广告效果的最大化至关重要。本文小编将为您提供一些关于如何搭建好Google关键词广告账号结构的建议和步骤。 1、设定目标和策略 在开始搭建广告账号结构之前&#xff0c;首先需要明确您的广告目标和策略。您想要增加网站流量还是提高转…

App测试中iOS和Android的差异

1、系统版本&#xff1a; iOS和Android系统版本的更新速度、使用人数比例以及功能的不同都可能导致应用程序在不同操作系统版本上的表现和兼容性存在区别。 例如&#xff0c;在iOS平台上&#xff0c;很多用户会更快地升级到最新版本的iOS系统&#xff0c;而在Android平台上&a…

20-多线程

20.1线程简介 世间有很多工作都是可以同时完成的。例如&#xff0c;人体可以同时进行呼吸、血液循环、思考问题等活用户既可以使用计算机听歌&#xff0c;也可以使用它打印文件。同样&#xff0c;计算机完全可以将多种活动同时进这种思想放在 Java 中被称为并发&#xff0c;而将…

优测云服务平台- 探索性测试策略分享

版权声明&#xff1a;本文作者 优测团队测试专家 郑凯泽 南明玮。 探索性测试是对常规的系统测试、新需求测试及专项测试的重要补充&#xff0c;往往能在短时间内发现更多的问题&#xff0c;一起来看看优测测试专家的分享吧~ 一、背景 优测团队长期承接腾讯社交产品、办公产…

讲解人工智能在现代科技中的应用和未来发展趋势

人工智能是目前全球最为热门和确实最具前途的领域之一&#xff0c;在现代科技中应用广泛&#xff0c;并在未来发展中有着无限的潜力。下面我将从应用和未来发展两个方面进行阐述。 一、人工智能在现代科技中的应用 1.智能家居&#xff1a;目前智能家居技术已经进步到了让你能…

美国第三季度经济GDP数据亮眼,其增长率上修至近2年最快

KlipC报道&#xff1a;美国商务部公布美国第三季度GDP按年率增长5.2%&#xff0c;较首次预估数据上调了0.3%。也是近2年来最快增速。 KlipC的分析师表示&#xff1a;“相较于第二季度相比&#xff0c;第三季度的时机GDP主要反映了消费者指出和私人库存投资的加速和出口的上升。…

虚拟数字人有什么用?有哪些应用场景?

​​过去三年&#xff0c;元宇宙概念进入到大众视野&#xff0c;虚拟数字人备受关注。抖音达人柳夜熙、洛天依、网红虚拟偶像AYAYI等&#xff0c;随着元宇宙的流行&#xff0c;数字人也逐渐成为一种趋势。据行业预测&#xff0c;到2030年&#xff0c;中国的数字人总市场规模将达…

C#中GDI+图形图像技术(Graphics类、Pen类、Brush类)

目录 一、创建Graphics对象 1.创建Pen对象 2.创建Brush对象 &#xff08;1&#xff09;SolidBrush类 &#xff08;2&#xff09;HatchBrush类 ​​​​​​​&#xff08;3&#xff09;LinerGradientBrush类 用户界面上的窗体和控件非常有用&#xff0c;且引人注目&#…