PolarDB-X为什么 https://zhuanlan.zhihu.com/p/481468406 中 “查询 DN 上 information_schema.innodb_locks/innodb_trx/innodb_lock_waits” 这步的时候可以 trx_b.trx_state != 'LOCK WAIT' 这个条件。。。
假设 txn1 和 txn3 都是单 sql 且需要在 DN1 DN2 都加锁, 应该会有
DN1 上: txn3 等 txn2, txn2 等 txn1
DN2 上: txn1 等 txn3
这样环死锁的情况,如果过滤了 trx_b.trx_state != 'LOCK WAIT',“txn3 等 txn2” 这个等待关系是不是就丢失了,无法判断出环哈~? 感觉是哪里我想错了
txn3 实际会有 2 个 DN 上的分支事务,这里的 trx_b 指的是单个 DN 上阻塞了其他事务的事务(即 trx_a 等 trx_b),在 DN1 上, txn3 的分支事务等 txn2 的分支事务这个关系不会丢的,DN1 上 txn3 的分支事务会出现在 SQL 里的 trx_a 返回。
此回答整理自钉群“阿里云 PolarDB-X 开源交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。