开发者社区> 问答> 正文

OceanBase ocp上开了死锁检测,但是检测不出来死锁,能帮忙看看么?第一步会话1执行: ?

OceanBase ocp上开了死锁检测,但是检测不出来死锁,能帮忙看看么?第一步会话1执行: start transaction; update hs_ses.ses_fund_real set enable_balance = to_char(1000000+2) where client_id = '88580000047964'; 第二步会话2执行 start transaction; update hs_ses.ses_fund_detail set business_frozen_balance = to_char(1000000+2) where client_id = '88580000047964' and init_date='20230629'; 第三步会话2执行: update hs_ses.ses_fund_real set enable_balance = to_char(1000000+2) where client_id = '88580000047964'; 第四步会话1执行: update hs_ses.ses_fund_detail set business_frozen_balance = to_char(1000000+2) where client_id = '88580000047964' and init_date='20230629';3296af38513f313fe18d24db218ad6d6.png 735d6437f56ac65ba635e70294b2c694.png

展开
收起
真的很搞笑 2023-07-04 13:47:22 91 0
来自:OceanBase
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    先需要了解一下死锁检测的工作原理:

    OceanBase是通过ocp实现死锁检测的。

    当事务持有的锁与其他事务冲突时候,会形成'wait for'链。

    ocp会定期检测'wait for'链,如果检测到形成 closed ring,则判定为死锁。

    死锁发生后,ocp会选择一个事务进行回滚,解决死锁。

    要解决此问题,可以:

    增大 ocpextra.deadlock_check_period 参数,缩短死锁检测间隔

    调整 ocpextra.deadlock_retries 参数,增加ocp重试次数

    核实 ocpextra.enable_deadlock_detection 是否正确开启死锁检测

    查看ocp日志,寻找死锁相关提示

    联系OceanBase支持, 分析死锁现象及提供的SQL上下文

    2023-07-31 08:00:28
    赞同 展开评论 打赏
  • 企业版问题麻烦跟交付团队对接哈,此回答整理自钉群“[社区]技术答疑群OceanBase”

    2023-07-04 13:57:13
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
蚂蚁OceanBase数据库团队,用于OceanBase技术原理、运维经验和案例分享、对外交流。
问答排行榜
最热
最新

相关电子书

更多
开源HTAP OceanBase产品揭秘 立即下载
云数据库OceanBase 架构演进及在金融核心系统中的实践 立即下载
自研金融数据库OceanBase的创新之路 立即下载