active in 2021-11-30 16:58 采纳率: 100%
浏览 102
已结题

想请教一下java业务批量处理的问题

例如:批量修改:一般有两种方式:
第一种:java代码service中处理,只反复调用一条sql
第二种:直接用mybatis文件sql中的foreach解决

想问一下这两种有啥区别,分别应用在什么场景下?

  • 写回答

6条回答 默认 最新

  • yue_hu 2021-11-30 17:10
    关注

    批次更新好处就是只需要和数据库进行一次通信,缺点是如果涉及的批量很大,那么就会导致执行速度变慢。
    循环更新则能有效降低事务粒度,缺点就是每次执行都需要一次通信。
    具体使用哪种方式则要更具实际的场景决定:如果你要操作10条数据,且都纳入同一个事务,那么很明显,批量更新更好。但是如果你要操作100W条数据,那么就很有必要分批进行操作。同样的如果你要操作10条数据,但是他们每一条都可以是单独的事务,且此数据属于热点数据,竞争严重,那么我认为单条更新更好,能有效的降低锁粒度。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 修改了问题 11月30日
  • 创建了问题 11月30日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题