请问seata中 如果AT模式不存在一样的行锁 那相同方法的全局锁是不是都不一样呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Seata的AT模式中,全局锁的设计并不是基于方法的,而是基于事务以及数据行的。当一个全局事务开始时,Seata会为涉及的每一行数据生成一个全局唯一的XID(全局事务ID)和Branch ID(分支事务ID),以此来标识并管理这些数据行上的锁。
具体来说: - 行级锁:对于同一数据行,在同一个全局事务中,即使多次执行相同的方法操作该数据行,这些操作共享相同的XID和Branch ID,因此它们在Seata中识别为同一个逻辑单元下的操作,不会重复加锁。简而言之,相同数据行在同一个全局事务里只会被锁定一次,不会因为调用相同方法多次而产生多份锁。
综上所述,相同方法的全局锁在不同事务中是不一样的,而在同一个事务内针对相同数据的操作共享相同的锁,不会重复生成。这确保了并发控制的有效性和事务处理的高效性。