AntDB-M在架构上分为两层,服务层和存储引擎层。元数据的并发管理集中在服务层,数据的存储访问在存储引擎层。为了保证DDL操作与DML操作之间的一致性,引入了元数据锁(MDL)。AntDB-M提供了丰富的元数据锁功能,然而高并发锁操作很容易出现锁竞争、等待、死锁的问题,AntDB-M具体提供了什么样的元数据锁,又是如何解决这些问题的呢?本文来一探究竟。
1 相关概念
l MDL_lock
MDL_lock即元数据锁对象,对一个由MDL_key唯一指定的元数据加锁,即获取到该对象。
l MDL_key
MDL_key即每个元数据的唯一代表。由命名空间、表、列三部分构成。
l MDL_ticket
一个元数据对应每种锁类型都只有一个锁对象,每个客户端连接线程(后文以线程指代)在持有或者等待某个锁对象时,为其分配一个唯一的对象(MDL_ticket),代表该线程持有或等待该锁对象。
l MDL_context文章来源:https://www.toymoban.com/news/detail-816139.html
每个线程都会分配一个元数据锁上下文(MDL_context),保存了其持有的所有MDL_ticket、正在等待的ticket、等待条件变量(用于等待唤醒)。文章来源地址https://www.toymoban.com/news/detail-816139.html
到了这里,关于亚信安慧AntDB:深入了解AntDB-M元数据锁的实现之相关概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!