CAS操作成功后,如何将MDL_ticket与MDL_lock关联,并更新线程的MDL_ticket_store?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
CAS操作成功后,可以直接将MDL_ticket的m_lock成员设置为指向MDL_lock的指针,无需加锁保护,因为MDL_lock::m_fast_path_state在此场景中充当了引用计数器的角色。接着,将m_is_fast_path标志设置为true,表示该MDL_ticket是通过快速路径获取的。然后,将MDL_ticket添加到线程的MDL_ticket_store中,通常是通过push_front方法,同时设置MDL_ticket的持续时间(duration)和MDL_request的ticket成员。最后,通过mysql_mdl_set_status函数更新MDL_ticket的性能监控接口(PSI)状态为GRANTED。