mvcc 可重复读实现原理 (rr mvcc)
2021-03-25 11:34:12   5  举报             
     
         
 rr mvcc
    作者其他创作
 大纲/内容
 end
  no(说明是开启该ReadView之外的事务修改过的,可以读)
  根据DB_ROLL_PTR取出数据历史版本
  no
  yes(说明是后来的事务修改的,不能读)
  返回该数据行数据
  start(同一事务下,每次读取都用的同一个ReadView)
  yes(说明是自己修改过的)
  它是rr,在第一次开启readview,以后一直都用这个readview。比如你开启了事务A,事务A一直在读,没提交;但是,同时也有其他线程事务修改了数据,就会产生行数据的事务id 大于 m_ids里的最大事务id。也就是这种情况。
  行数据事务ID是否大于等于最大事务ID
  行数据事务ID是否在ReadView事务ID集合中
  ReadView属性说明
  yes(说明这个数据是之前事务修改过的,可以读)
  行数据事务ID是否等于当前事务ID
  m_ids:此时有哪些事务在MySQL里执行还没提交的 ( 活跃事务 )min_trx_id:m_ids里最小的值max_trx_id:mysql下一个要生成的事务id,就是最大事务idcreator_trx_id:你这个事务的id
  读取行数据里面的事务Id(DB_TRX_ID)
  行数据事务ID是否小于最小事务ID
   
 
 
 
 
  0 条评论
 下一页
  
   
   
  
  
  
  
  
  
  
 