求教springboot在mysql里批量操作数据的一个问题?

假如我现在要在mysql做一些批量的操作,比如批量新增、批量删除。但是我需要在操作完以后知道哪些数据是操作成功/失败的。请问这个要怎么设计呢?直接加事务保证全部成功或者全部失败吗?如果不用事务呢?请大神指教,谢谢。


mysql
java
后端
2022-10-09 13:15:30
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
大娘送面粉
2

如果又要性能,又要快速插入,个人感觉只能使用一些简单的策略;


1、直接循环一条一条插入,性能肯定是最差的,但是也要看业务是不是会同时插入成百上千条,如果插入的量本来就是在可控范围内的,那么完全可以使用一条一条插入的方法;


2、整体批量插入,整体批量插入只能返回一个插入成功的数量,如果数量比预期数量少,那说明一定是有一部分失败了,因此在插入的时候最好带一个唯一ID,使用唯一ID,用 in 进行查询,最终得到两者 id 差集,将差集 id 条目再次插入,这里可以使用递归进行,保证最终所有条目插入完成;


3、基于分批次的插入,假设我们的业务的失败率大概在 1%, 那么我们可以尝试分批次插入,每批 10 条, 将这 10 条按照上面 整体批量插入 的方法进行插入即可,这样即可以防止大面积的反查,也可以保证一定的效率,具体分成几批,每批多少条,要看业务本身而定;

分享
微博
QQ
微信
回复
2022-10-09 15:02:38
相关问题
Native代码如何直接操作数据
1011浏览 • 1回复 待解决
求教一个sql语句传参怎么写?
1180浏览 • 1回复 待解决
mysql左连接一个问题
294浏览 • 1回复 待解决
mysql一个问题有懂吗?
306浏览 • 1回复 待解决
请教一个mysql问题有知道吗?
598浏览 • 1回复 待解决
如果写一个多级获取数据问题
1293浏览 • 1回复 待解决
MongoDB中如何创建一个数据库?
1754浏览 • 1回复 待解决
数据一个设计问题有懂吗?
222浏览 • 1回复 待解决
mysql怎样批量删除表数据
703浏览 • 1回复 待解决
一个更新操作有必要用到事务吗?
135浏览 • 1回复 待解决
一个页面怎么实现多个AbilitySlice?
11938浏览 • 5回复 待解决
问大家一个问题,关于原服务
4908浏览 • 1回复 待解决
关于索引一个问题有懂吗?
725浏览 • 1回复 待解决