前言:
记录下最近gbdb折腾时阅读innodb源码的记录。
正文:
之前说过Mtr,有很多书写的Mtr能够控制memo内的锁结构,然而加锁过程其实来自于buf 下的 buf_page_get_gen 函数, mtr_memo_push 不包含加锁流程,而mtr中有释放锁的方法mtr_memo_slot_release 这个方法可用于处理获得page的锁及其 释放获取bufpage的锁在buf中实现。
如
// 会在释放页的锁中调用这个函数 // 会做一下事情页LSN的写入 buf_flush_insert_into_flush_list (加入flush链表) buf_flush_note_modification
Mtr 的主要功能是产生日志 和负责锁的释放 。加锁的过程和锁级别则是由上层控制。