高并发、低延迟、无死锁,深入了解AntDB-M元数据锁的实现8

本文详细介绍了AntDB-M数据库如何通过死锁检测算法防止死锁,包括线程的死锁检测流程、使用等待图分析等待关系,以及检测过程中的广度和深度遍历策略。AntDB-M凭借高性能和广泛应用背景提供在线服务。
摘要由CSDN通过智能技术生成

5.6 死锁检测

图4-死锁等待

每个线程在进入锁等待前,都会先进行死锁检测,避免陷入死锁等待。在检测前,会先将自己获取到的unobtrusive锁进行物化,即将锁放入锁的授予列表中,以便死锁检测能区分锁的归属线程。然后设置自己上下文等待ticket,每个进入等待的线程都有自己的等待ticket,用于死锁检测。

AntDB-M使用等待图算法进行死锁检测,每个锁对象下的waiting队列中的每个ticket都存在自己的不兼容锁,即正在等待的锁,所有锁对象下的waiting队列中的ticket根据等待关系,构成了一个等待图。先对当前线程的等待的锁对象下的所有ticket进行广度优先检测,即对当前ticket节点的所有边进行检测,在没有发现死锁时,再进入每个ticket上下文的等待ticket对应的锁对象进行深度检测。

图5-死锁检测

检测开始时记住此次检测的起始上下文,即当前线程的上下文。当在广度、深度遍历过程中,发现等待路径上再次出现起始上下文,说明出现了循环等待,即死锁。如果检测深度(即检测上下文个数)超过阀值(32),也认为出现了死锁。

关于AntDB数据库

AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值