MyBatis批量插入,10秒内十万条数据插入,及性能测试

本文通过Spring Boot项目测试了MyBatis的三种批量插入方式:循环单次插入、Mybatis-Plus批量插入和原生批量插入。在插入10万条数据时,Mybatis-Plus性能最佳,提升了15倍,原生批量插入可能因SQL过大导致错误,需调整MySQL配置。总结推荐使用Mybatis-Plus的批量插入功能。

        批量插入功能是日常工作中比较常见的业务功能之一, MyBatis 批量插入的汇总,同时对 3 种实现方法做一个性能测试,以及相应的原理分析。

        本文使用 Spring Boot 项目,批量插入 10W 条数据来分别测试各个方法的执行时间。

简单说一下 3 种批量插入功能分别是:

  1. 循环单次插入;

  2. Mybatis-Plus 批量插入功能;

  3. 原生批量插入功能。

一、准备工作

开始之前先创建数据库和测试数据,执行的 SQL 脚本如下:

-- 创建数据库
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP DATABASE IF EXISTS `testdb`;
CREATE DATABASE `testdb`;
USE `testdb`;

-- 创建 user 表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `createtime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- 添加测试数据
INSERT INTO `user` VALUES (1, '张三', 'qweqwe', '2021-09-10 18:11:16');
INSERT INTO `user` VALUES (2, '李四', 'asdasd', '2021-09-10 18:11:28');
INSERT INTO `user` VALUES (3, '王五', 'zxczxc', '2021-09-10 18:11:34');
INSERT INTO `user` VALUES (4, '赵六', 'asdasd', '2021-09-10 18:11:41');
INSERT INTO `user` VALUES (5, '孙Ⅶ', 'cvbcvb', '2021-09-10 18:12:02');

SET FOREIGN_KEY_CHECKS = 1;

二、循环单次插入

循环单次插入的(测试)核心代码如下:

import com.example.demo.model.User;
import com.example.demo.service.impl.UserServiceImpl;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值