当前位置: 首页> 科技> 互联网 > 网页打不开但是能上网_软件测试开发培训_营销策划公司排名_网络营销自学网站

网页打不开但是能上网_软件测试开发培训_营销策划公司排名_网络营销自学网站

时间:2025/7/11 18:16:51来源:https://blog.csdn.net/f135917h/article/details/144730660 浏览次数:0次
网页打不开但是能上网_软件测试开发培训_营销策划公司排名_网络营销自学网站

MyBatis-Plus 批量新增

MyBatisPlus的IService接口中,提供的批量新增 .saveBatch()性能较for循环新增,有比较明显的性能提升

原因:

MybatisPlus的批处理是基于PrepareStatement的预编译模式,然后批量提交,最终在数据库执行时还是会有多条insert语句,逐条插入数据;

多条insert就会有多次跟数据库的网络交互,还是会消耗资源影响性能;

但是想对批量新增有更加优秀的性能提升,需要对MySql底层处理逻辑进行参数配置,即在application.yml文件中修改配置:rewriteBatchedStatments=true

原因:

MySQL的客户端连接参数中有这样的一个参数:rewriteBatchedStatements。顾名思义,就是重写批处理的statement语句;

这个参数的默认值是false,我们需要修改连接参数,将其配置为true

修改项目中的application.yml文件,在jdbc的url后面添加参数&rewriteBatchedStatements=true;

ClientPreparedStatementexecuteBatchInternal中,有判断rewriteBatchedStatements值是否为true并重写SQL的功能:

将所有新增重写成一条SQL语句,进行一次网络交互即可执行完成,效率大大提升;

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=truedriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: root
@Test
void testSaveBatch() {// 准备10万条数据List<User> list = new ArrayList<>(1000);long b = System.currentTimeMillis();for (int i = 1; i <= 100000; i++) {list.add(buildUser(i));// 每1000条批量插入一次if (i % 1000 == 0) {userService.saveBatch(list);list.clear();}}long e = System.currentTimeMillis();System.out.println("耗时:" + (e - b));
}
关键字:网页打不开但是能上网_软件测试开发培训_营销策划公司排名_网络营销自学网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: