怎么区别全局还是本地_分布式事务嵌套本地事务的各种情况讨论实录

本文探讨在for循环中如何判断是全局事务还是局部事务,并通过示例解释不同注解配置下的事务行为。群内专家指出,全局事务与局部事务的判断取决于函数的事务注解。总结了六种不同情况,包括分布式事务的分支事务数量及无全局事务的情况。
摘要由CSDN通过智能技术生成

今天在seata的开发者群里面看见一个很好的问题,现在准备分享给大家:

"请教一个问题,如果在for循环里面操作数据库,是每一次循环是一个分布式事务,还是整个for循环是一个分布式事务?"

d32bd8fdae9f11855688636cea8d8f77.png

群里的开发者大佬的回答如下:

"for所在的函数或调用它的函数有全局事务注解那么他属于一个全局事务

如果是for里所调的每个函数上面有全局事务注解,外面没有,那么就是每一个分布式事务了

分为2种 有没有for的函数有没有加本地事务注解,有的话只算一个分支事务,如果没加就是N个分支事务,性能明显下降

在for外加本地事务注解就是复用同一个connection,那么只会commit一次"

先看一个例子:

puclic class xxxx{

(1).

public void globalMethod(){

for(User user:userList){

(2).

user.getMethod();

(4).

yyyy.getMethod1();

}

}

}

(3).

xxxx.globalMethod();

个人针对大佬的回答的总结,分布式事务和本地事务出现的各种情况:

1.for外(3)或者(1)全局事务注解,里面不加--分布式事务,里面N个分支事务

2.for外(3)或者(1)本地事务,里面不加---一个本地事务

3.for外(3)或者(1)全局事务,里面(2)本地事务注解--分布式事务,N个分支事务

4.for外(3)或者(1)不加事务注解,里面(2)不加事务注解-无全局事务,N个本地事务

5.for外(3)或者(1)不加事务注解,里面(2)加本地事务注解--无全局事务,N个本地事务

6.for外(3)有全局事务注解,for所在函数(1)有本地事务注解--1个全局事务 1个分支事务,N个本地事务

如果有遗漏,给我留言,欢迎大家留言一起讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值