首页 > 数据库 > 国内数据库 > 亚信安慧AntDB:AntDB-M元数据锁(十)
每个线程的锁上下文都有一个条件变量来进行锁等待。线程在没有获取锁的授权时,会将自己的ticket添加到锁对象的等待队列,并进入等待状态。等待队列的锁授予检测有3个时机:
1)加锁申请阶段,hog,piglet类型锁申请个数超过阀值。
2)当有线程释放元数据锁。
3)元数据锁降级。
时机触发时,会遍历该锁对象的等待列表,检测到可以授予时,设置线程等待状态为授予锁,通知该线程,并将ticket从等待队列移到授予队列。
AntDB-M通过多层次、多粒度、多优先级提供了灵活丰富的元数据锁功能,适用于各种业务场景。将加锁路径区分快速、慢速路径,提高绝大部分业务场景的加锁效率。通过优先级反转,避免低优先级饥饿。高效的广度优先死锁检测技术,避免了死锁的发生。如果检测到了死锁,会优先驱逐DML操作,保障成本更高的DDL操作,相同操作会优先驱逐等待时间更短的操作,保持公平性。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70026696/viewspace-3005874/ ,如需转载,请注明出处,否则将追究法律责任。