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

IS_DESTROYED: 标识锁对象将被释放。

HAS_OBTRUSIVE:标识锁对象下有obtrusive锁,新的锁申请必须进入慢速申请路径,释放锁时,也要先加锁以保护已授予锁链表。

HAS_SLOW_PATH: 标识锁对象下是否有unobtrusive锁。

5.3.2 干扰型(obtrusive)

相互间不兼容,对于DML操作不通用。此类锁的申请过程需要对锁对象的读写锁加写锁,对不同线程的锁申请影响较大,因此显的比较张扬。

scoped locks:X,S。

per-object locks:SU, SRO, SNW, SNRW, X。

5.4 加锁路径

锁的申请过程分为两种路径,1)快路径, 即只需要增加锁个数计数来授予锁; 2)慢路径,需要对锁对象读写锁加写锁来授予锁.

5.4.1 快路径(fast path)

对于unobtrusive锁,可以通过快速路径来快速授予锁。但是授予锁有个前提,就是该锁对象下没有obtrusive锁,因为unobtrusive与obtrusive之间有些锁是互斥的,只有在没有obtrusive锁存在时,unobtrusive锁才彼此兼容。通过检测锁状态的HAS_OBTRUSIVE位即可快速判断。通过CAS操作即可更新锁个数,同时也会检测是否已有其他线程以张扬方式申请了锁。CAS操作成功,即申请锁成功。

关于AntDB数据库

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值