暂无图片
Oceanbase死锁检测问题
我来答
分享
暂无图片 匿名用户
Oceanbase死锁检测问题

【 使用环境 】 测试环境
【 OB or 其他组件 】OB
【 使用版本 】CE 4.1.0.0
【问题描述】死锁检测开关打开,但是模拟死锁过程中,发现虽然能检测到死锁,但是并不会回滚其中一个会话,另外的一个会话也还是会阻塞
【复现路径】
会话一:
ff61777098cdbbce3c83afef80b7ead4
会话二:
9f5a866543c1aaf6eda608c45bf86454
隐含参数:

1693476067310_74699012-A7B5-4519-BA25-157D60D2DA12

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

在4.3版本之前,死锁检测功能还处于不完善的状态(时间和精力投入在其他模块的开发重构上,因而在4.3版本之前没有精力顾及),仅能检测基本的死锁。
在您所遇到的这个场景中,死锁检测应该是正常工作的,而之所以在一个session检测到死锁之后另外一个session没有继续执行,很可能因为您使用的是Oracle模式的租户。
OB工作在Oracle模式下时,探测到死锁后的行为同Oracle保持一致:即只回滚语句,但是不回滚事务,需要用户手动回滚事务。
OB工作在Mysql模式下时,探测到死锁后的行为同Mysql保持一致:即直接回滚事务。
两种行为都是可理解的,Oracle采用了更保守的做法,需要用户去判断,而Mysql采用了更激进的做法,但大多数场景下更符合用户的预期。OB兼容它们的行为。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏