ceanBase 分布式事务的全局死锁检测(Global Deadlock Detection)与超时控制机制,以下说法正确的是?

OceanBase 分布式事务的全局死锁检测(Global Deadlock Detection)与超时控制机制,以下说法正确的是?

A. OceanBase 使用超时回滚作为唯一的死锁处理策略,不支持主动死锁检测,因为分布式环境下维护全局等待图开销过高。

B. 分布式事务的死锁检测依赖 Root Service 集中收集所有节点的锁等待信息,周期为 1 秒,当检测到循环等待时,选择一个牺牲者事务回滚。

C. 事务空闲超时(ob_trx_idle_timeout )与事务超时(ob_trx_timeout )是两个不同的参数,前者控制事务在无操作情况下的最大空闲时间,后者控制事务从开始到结束的总时长。

D. 当分布式事务发生死锁且触发回滚时,系统会同时回滚所有参与死锁的事务,以彻底解除死锁状态。

解析
OceanBase 中事务超时控制分为多个维度:ob_trx_idle_timeout (默认 5 秒)控制事务在执行一条 SQL 后,等待下一条 SQL 的最大空闲时间;ob_trx_timeout (默认 86400 秒)控制事务从开始到提交或回滚的总时长。两者独立生效,任一超时都会触发事务回滚。

  • A 错误 :OceanBase 支持主动死锁检测 ,采用分布式标签传播算法(如之前题目所述),并非仅依赖超时回滚。
  • B 错误 :死锁检测是去中心化 的,每个 OBServer 参与局部等待图交换,Root Service 不负责集中检测。
  • C 正确 :准确区分了两种超时参数的含义。
  • D 错误 :死锁回滚时只选择一个牺牲者(victim)事务 回滚,其他事务继续执行,而不是回滚所有参与者。这是标准死锁解除策略,以最小化影响。

正确答案:C

正确答案:C