iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >大批量数据分批批量插入或更新(Mybatis+MySQL)
  • 435
分享到

大批量数据分批批量插入或更新(Mybatis+MySQL)

mybatismysql数据库javaspringboot 2023-08-30 12:08:31 435人浏览 独家记忆
摘要

大批量数据分批批量插入或更新 在Mysql数据库的前提下,插入或更新大批量数据。首先批量插入需要考虑到以下几个因素: 数据库一次可以承受多大或者多少条数据的插入批量插入是否会占用mysql资源太久,影响系统整体使用性能代码中的集合是否会造成

大批量数据分批批量插入或更新

Mysql数据库的前提下,插入或更新大批量数据。首先批量插入需要考虑到以下几个因素:

  1. 数据库一次可以承受多大或者多少条数据的插入
  2. 批量插入是否会占用mysql资源太久,影响系统整体使用性能
  3. 代码中的集合是否会造成内存不足

一、Mysql性能考虑

1.1计算插入一条数据需要的空间

以下是mysql各个数据类型的占用的字节,可在菜鸟教程-MySQL查看各个分类的具体字节。
数值类型
数值类型
注意定长和变长数据类型,将所有数据加起来。假设一条数据需要的字节是100。

1.2查看MySQL参数

查看MySQL一次最大能插入多少

show variables like '%max_allowed_packet%';

查询
1073741824/1024/1024=1024M,1M是10241024/100=10485.76,约等于10000条。那么1024M可插入102410000=1024W条。

1.3MySQL执行时间

链接耗时 (30%)
发送query到服务器 (20%)
解析query (20%)
插入操作 (10% * 词条数目)
插入index (10% * Index的数目)
关闭链接 (10%)
可以看出最耗时的是链接。其次是解析。所以插入或更新时尽量采用批量的方式

二、代码实现分批批量查询

2.1mybatis的xml实现批量sql

直接贴代码,使用DUPLICATE KEY UPDATE是,在设置主键或者唯一键字段的前提下,存在则更新、不存在则插入。这是MySQL中的使用方法

<insert id="saveOrUpdateSlaStandardsRat">        INSERT INTO sla_standards_rat(date_time,area_name,ec_code,ec_name,belong_trade,apn_name,standards_rat,order_type,create_time)        VALUES        <foreach collection="list" index="index" item="item" separator=",">            (#{item.dateTime},#{item.city},#{item.ecCode},#{item.ecName},#{item.industry},#{item.apnName},#{item.rat},#{item.orderType},now())        foreach>        ON DUPLICATE KEY UPDATE ec_name = values(ec_name), belong_trade=values(belong_trade),area_name=values(area_name),standards_rat=values(standards_rat),update_time=now()insert>

2.2分批插入

MAX_NUMBER为自行定义分批的大小。

    private static final Integer MAX_NUMBER = 2000;    @Override    public void test() {        log.info("-----------------开始同步数据--------------------");        List<SrsfulirmsResourceGprs> resourceGprs = srsfulirmsResourceOSSMapper.getSrsfulirmsResourceGprss();        //分割        if (!CollectionUtils.isEmpty(resourceGprs)){            int limit = countStep(resourceGprs.size());            List<List<SrsfulirmsResourceGprs>> mglist1 = new ArrayList<>();            Stream.iterate(0, n -> n + 1).limit(limit).forEach(i -> {                mglist1.add(resourceGprs.stream().skip(i * MAX_NUMBER).limit(MAX_NUMBER).collect(Collectors.toList()));            });            for (List<SrsfulirmsResourceGprs> myList:mglist1){                int row1 = srsfulirmsResourceMysqlMapper.saveOrUpdateSrsfulirmsResourceGprss(myList);                log.info("---------------------同步数据row1:"+row1+"------------------------");                try {                    Thread.sleep(1000);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }    }       private static Integer countStep(Integer size) {        return (size + MAX_NUMBER - 1) / MAX_NUMBER;    }

来源地址:https://blog.csdn.net/her_he/article/details/129929228

您可能感兴趣的文档:

--结束END--

本文标题: 大批量数据分批批量插入或更新(Mybatis+MySQL)

本文链接: https://www.lsjlt.com/news/382872.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 大批量数据分批批量插入或更新(Mybatis+MySQL)
    大批量数据分批批量插入或更新 在MySQL数据库的前提下,插入或更新大批量数据。首先批量插入需要考虑到以下几个因素: 数据库一次可以承受多大或者多少条数据的插入批量插入是否会占用Mysql资源太久,影响系统整体使用性能代码中的集合是否会造成...
    99+
    2023-08-30
    mybatis mysql 数据库 java spring boot
  • 批量插入或更新数据(MyBatis-plus框架)
    目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础类,比如封装了BaseEntity去集...
    99+
    2023-09-27
    mybatis mysql 数据库
  • mybatis 的批量更新和批量插入(清晰明了)
    mybatis批量插入 SELECT LAST_INSERT_ID() AS ID INSERT INTO rp_feno_app_rh_hard_device...
    99+
    2023-09-10
    mybatis java mysql
  • MyBatis如何批量插入大量数据
    这篇文章将为大家详细讲解有关MyBatis如何批量插入大量数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题背景:只用MyBatis中foreach进行批量插入数据,一次性插入超过一千条的时候MyBa...
    99+
    2023-06-22
  • MyBatis批量插入大量数据(1w以上)
    问题背景:只用MyBatis中foreach进行批量插入数据,一次性插入超过一千条的时候MyBatis开始报错。项目使用技术:SpringBoot、MyBatis 批量插入碰到的问题...
    99+
    2022-11-12
  • 基于Mybatis-Plus扩展批量插入或更新InsertOrUpdateBath
    前言: mybatis-plus 是一款很好用的crud基础框架,但是我在api中没有找到插入或者更新,那么我想着基于mybatis-plus 自定义一个方法出来用,因为插入或者更新在字段数量多的时候写xml是非常麻烦的事情。 传统写法: ...
    99+
    2023-08-31
    mybatis java mysql
  • C# MySQL 插入大批量数据
    一、定义DataTable的数据类型 private DataTable GetDataTableFromExternalSource(string tablename) { DataTable dat...
    99+
    2023-09-08
    mysql c# 数据库
  • Mybatis之批量更新数据
    Mybatis之批量更新数据(批量update) 前言 当我们使用mybatis的时候,可能经常会碰到一批数据的批量更新问题,因为如果一条数据一更新,那每一条数据就需要涉及到一次数据库的操作,包括网络...
    99+
    2023-09-12
    mybatis 数据库 mysql
  • Mybatis批量插入大量数据最优方式
    Mybatis批量插入的方式有三种 1. 普通插入 2. foreach 优化插入 3. ExecutorType.BATCH插入 下面对这三种分别进行比较: 1.普通插入 默认的插入方式是遍历ins...
    99+
    2023-09-06
    mybatis java mysql
  • Mysql大数据批量插入方法
    MySQL是当前最流行的关系型数据库之一,大数据批量插入是MySQL中常用的操作之一。在处理大量数据时,如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,可以大大提高数据的处理速度。下面介绍几种MySQL大数据批量插入的方法...
    99+
    2023-09-14
    mysql 大数据 数据库
  • mybatis怎么批量更新数据
    MyBatis 可以通过批量操作来更新数据。下面是一个示例代码,展示如何使用 MyBatis 进行批量更新数据:1. 首先,需要在 Mapper XML 文件中定义一个批量更新的 SQL 语句,如下所示:```xmlUPDATE tab...
    99+
    2023-08-09
    mybatis
  • MyBatis批量插入/修改/删除MySql数据
    前言 由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用M...
    99+
    2022-11-12
  • spring data jpa开启批量插入、批量更新的示例分析
    这篇文章给大家分享的是有关spring data jpa开启批量插入、批量更新的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ORM框架,最早我用的是jdbcTemplate,后来用了Mybatis,唯独...
    99+
    2023-06-20
  • MyBatis实现MySQL的批量插入
    准备工作 首先,我们需要确保以下几点: 你已经安装了MySQL数据库,并且可以正常连接。你已经配置好了MyBatis的环境,并且可以成功执行单条插入语句。 数据库表准备 为了演示批量插入的过程,我们创...
    99+
    2023-09-06
    mybatis mysql java
  • 实操MySQL+PostgreSQL批量插入更新insertOrUpdate
    目录一、百度百科1、MySQL2、PostgreSQL3、PostgreSQL相对于MySQL的优势二、postgres中insertOrUpdate代码实例1、创建user表2、简...
    99+
    2022-11-12
  • Oracle中多表关联批量插入批量更新与批量删除操作
    该文章会分为三部分 1.多表关联批量插入 2.多表关联批量更新 3.多表关联批量删除 首先要明白一点,为什么会有批量这一个概念,无非就是数据太多了,在java端把数据查出来然后在按照100-300的批...
    99+
    2022-10-18
  • Mysql 实现批量插入对已存在数据忽略或更新
    Mysql 实现批量插入对已存在数据忽略/更新 文章目录 Mysql 实现批量插入对已存在数据忽略/更新一. 表的准备二. 实现2.1 实现原理2.2 批量插入对已存在数据忽略 一. ...
    99+
    2023-09-20
    mysql 数据库
  • Mybatis批量插入大量数据的方法有哪些
    本文小编为大家详细介绍“Mybatis批量插入大量数据的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis批量插入大量数据的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Mybat...
    99+
    2023-07-05
  • python批量插入数据到mysql
    使用python批量插入数据到mysql的三种方法 自动化单条insert # -*- coding:utf-8 -*-import timefrom pymysql import *# 装饰器,计算插入50000条数据需要的时间def t...
    99+
    2023-09-06
    mysql 数据库 sql
  • Mybatis批量插入大量数据的最优方式总结
    目录Mybatis批量插入的方式有三种下面对这三种分别进行比较:1.普通插入2.foreach 优化插入3.ExecutorType.BATCH插入总结:Mybatis批量插入的方式...
    99+
    2023-03-19
    mybatis大量数据批量insert mybatis 批量插数据 mybatis批量新增数据
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作