当前位置: 首页 > 知识库问答 >
问题:

java - springboot多线程事务对于大数据量插入更新是否有性能提升?

欧阳鸿德
2024-01-18

业务需求需要先进行远程请求数据——> 数据筛选清洗组装-> 同库不同表间删除、更新->插入数据,如出现异常则进行回滚,现在对于数据筛选清洗组装采用多线程操作,后面的对数据的操作采用同步方式,虽然可以保持事务,但是感觉入库有点慢了,测试数据3w条,表结构还好不是太复杂,大概6mb多的sql语句,入库需要4s,感觉有点慢了,能不能使用多线程事务进行优化?这个3w只是往一张表中插,后面还有比这个数据量更大的往其他表插,就现在的性能来说感觉不太够啊。

多线程数据库事务操作,最重要的是事务一致,所以如何在保证事务的情况下能够提高效率,有没有示例demo推荐的?或者有更好的方案?

共有1个答案

华良平
2024-01-18

有两种方式,你可以做个参考。

  1. 尝试用多线程共享一个 session 打开同一个事务,并发入库,这种方法没尝试过,大概率不可行,你可以自己试一下
  2. 多线程多 session 同时并发入库;此时给同一批数据设置一个唯一的批次号,如果全部成功,标记该批次号为成功,不成功,后续可以异步删除。

在尝试上面的方式之前,应该要确认一下是否使用了批量插入、分批提交等优化方式。

 类似资料:
  • 我只是想知道TABLOCK是否会提高批量插入的性能? 根据中的第一个答案https://dba.stackexchange.com/questions/165966/how-does-one-investigate-the-performance-of-a-bulk-insert-statement,看来塔洛克会的。 根据官方文件https://docs.microsoft.com/en-us/s

  • 将excel的大数据导入到MySQL数据库需要很长时间,那么如何提高性能呢? Excel数据喜欢以下内容: 学生表 床单课程 MySQL的表喜欢如下: 学生桌 资源表 图像的浅灰色区域可能会得到改善,但我不知道如何对其进行优化。使用 和字段确定行数据是否唯一<代码>参考id和表中的字段确定行数据是否唯一。

  • 问题内容: 好的,可以说我要插入100行,每行大约有150列(我知道听起来很多列,但是我需要将此数据存储在一个表中)。插入将随机发生(即,每当一组用户决定上载包含数据的文件时),每月大约20次。但是,数据库将在连续负载下处理大型企业应用程序的其他功能。这些列是varchars,int以及其他各种类型。 将这些插入物包装在一个事务中(而不是一次运行一次)的性能增益会变大,变小还是介于两者之间? 为什

  • 本文向大家介绍Django 多对多字段的更新和插入数据实例,包括了Django 多对多字段的更新和插入数据实例的使用技巧和注意事项,需要的朋友参考一下 表的普通字段 一对多字段 多对多字段 插入数据 表的普通字段 一对多字段 多对多字段 修改数据 补充知识:Django的ManyToManyField(多对多)的使用以及through的作用 创建一个经典的多对多关系:一本书可以有多个作者,一个作者

  • 当我从CSV文件向表插入大容量数据时,它不工作,显示错误: 行2列9的大容量加载数据转换错误(类型不匹配或指定代码格式的字符无效) csv文件中的第9列值为NULL。 我怎么处理这个?

  • 问题内容: 我有一个应用程序,需要通过大量条目更新大量数据。基本上,它执行约7,000次插入和/或更新,但需要花费很长的时间(例如将近9分钟…平均每个查询约0.08秒)。从本质上讲,我正在寻求提高速度来处理多个此类请求(我不希望对我模糊的示例提出具体的答案……只是希望,可以帮助解释)。 以下是对请求进行概要分析的一些示例: 重复一遍恶作剧(大约7,000次)。这是一个更新,它收集在24小时内定期生