![个人头像照片](https://ucc.alicdn.com/avatar/avatar3.jpg)
暂无个人介绍
2024年02月
你的逻辑和理解是错误的。
就拿:1)扣减库存 2)生成订单 ;这个全局事务进行举例,该全局事务涉及了2个分支事务,涉及库存表 、订单表,那么该全局事务就会生成2个全局锁,2个全局锁的id(lockKeys)是由修改前后库存表、订单表的表中数据id加工而来。
另一个全局事务:4)修改用户状态 5)修改余额状体;如果涉及了2张表那么也会生成2个全局锁,但是这2个全局锁和上面库存表、订单表是没有关系的。
而@GlobalLock 修饰的3)增加库存 这个方法,这个是操作的库存表,那么就和第一个全局事务扣减库存操作的是同一张表,这时候@GlobalLock修改的增加库存这个方法,在commit之前就会去TC那里查询是否有全局事务持有了该库存表的全局锁,有的话就会重试一定的次数,次数尽了还被持有锁则自己就会进行回滚。和另一个全局事务【4)修改用户状态 5)修改余额状体】是没有关系的。
是对全局事务下的全局锁的竞争