**关于 OceanBase 分布式死锁检测机制,以下描述正确的是?**

**关于 OceanBase 分布式死锁检测机制,以下描述正确的是?**单选

A. OceanBase 采用集中式死锁检测机制,由 Root Service 定期收集所有节点上的锁等待图,集中检测死锁。

B. 分布式事务中的死锁只能发生在多个参与者节点之间,单个 OBServer 内部的多个本地事务不存在死锁可能。

C. 分布式死锁检测的超时机制是每 1 秒进行一次超时检测,一旦发现事务等待时间超过分布式死锁超时阈值(默认 10 秒),立即终止该事务。

D. OceanBase 使用分布式死锁检测器,每个 OBServer 维护本地锁等待图,并通过异步通信将图的摘要信息传播给其他节点,最终通过局部信息合并检测出死锁。

1 个赞

解析
OceanBase 的分布式死锁检测采用 去中心化的分布式算法 (类似无向图环检测 + 标签传递协议)。每个 OBServer 节点独立维护部分等待关系,节点间通过异步消息交换等待图摘要,最终形成全局视图并判断是否存在循环等待。这种设计避免了单点瓶颈,更适合大规模分布式集群。

  • A 错误 :OceanBase 没有集中式检测器 (Root Service 不负责死锁检测),因为集中式方式在分布式场景下瓶颈明显,且 Root Service 本身可能单点故障。
  • B 错误 :本地事务同样可能形成死锁(例如两个会话在同一个 OBServer 上互相锁定不同行),OceanBase 通过本地锁管理器检测。
  • C 错误 :超时机制不是简单的全局阈值终止;分布式事务处理超时分为 事务空闲超时事务超时死锁检测 等多个不同维度的参数。死锁检测会自动识别循环等待并 选择一个牺牲者(victim)回滚 ,而不是一旦超时就盲目中止。

正确答案:D