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

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

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

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

能用第二种肯定就不会用第一种了。
第一种每次都需要与数据库建立连接,浪费资源。

  1. 这个问题的本质:mysql的sql批量执行和单条一条条的去执行的区别
  2. 区别嘛,也就是批处理的优势:
  • 批处理大量减少与数据库的交互,减轻数据的压力
  • 批处理同时也能减少SQL语句解析的次数
  • 减少网络传输的IO,性能上有一定提升
  1. 应用场景:本人没用过,我能想到的修数据,导数据,需要批量执行。

肯定有区别,一个是一个sql执行多遍,第二种是只执行一条sql,第二种显然更好

使用数据库是正道,MySQL应该够用。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632