一、Read View是什么?
READ VIEW 是快照,就是像拍照一样 把这一瞬间的景象(数据)保存下来,
快照一旦形成就不会改变 只能当前快照声明周期了 再生成新的快照,
我们的事务隔离等级中的 可重复读和读提交都是通过READ VIEW实现的。
m_ids: 指的是在创建 Read View 时,当前数据库中「活跃事务」的事务 id 列表,注意是一个列表,“活跃事务”指的就是,启动了但还没提交的事务。(* 每次生成新Read View时,是会更新的)
min_trx_id :指的是在创建 Read View 时,当前数据库中「活跃事务」中事务 id 最小的事务,也就是 m_ids 的最小值。
max_trx_id :这个并不是 m_ids 的最大值,而是创建 Read View 时当前数据库中应该给下一个事务的 id 值,也就是全局事务中最大的事务 id 值 + 1;
creator_trx_id :指的是创建该 Read View 的事务的事务 id。
InnoDB储存的行结构中,有三个隐藏列:
row_id 如果我们建表的时候指定了主键或者唯一约束列,那么就没有 row_id 隐藏字段了。如果既没有指定主键,又没有唯一约束,那么 InnoDB 就会为记录添加 row_id 隐藏字段。
trx_id,当一个事务对某条聚簇索引记录进行改动时,就会把该事务的事务 id 记录在 trx_id 隐藏列里;
roll_ptr,每次对某条聚簇索引记