欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

事务补充(8)

程序员文章站 2022-03-10 11:45:07
`MVCC` 在 里,有两个"视图"个概念 1. 一个是 ,它是一个用查询语句定义的虚拟表,在调用的时候执行查询语句并生成结果。 2. 另一个是 在实现 时用到的一致性读视图,即 ,用于支持 (`Read Committed RR Repeatable Read`,可重复读)隔离级别的实现。 里面每 ......

mvcc

mysql里,有两个"视图"个概念

  1. 一个是view,它是一个用查询语句定义的虚拟表,在调用的时候执行查询语句并生成结果。
  2. 另一个是innodb在实现mvcc时用到的一致性读视图,即consistent read view,用于支持rcread committed,读提交)和rrrepeatable read,可重复读)隔离级别的实现。

innodb里面每个事务有一个唯一的事务id,叫做transaction id,它是在事务开始的时候向innodb的事务系统申请的,是按申请顺序严格递增的。
而每行数据也是有多个版本的。每次事务更新数据的时候,都会生成一个新的数据版本,并且把transaction id赋值给这个数据版本的事务id,记为row trx_id。同时,旧的数据版本要保留,并且在新的数据版本中,能够有信息可以直接拿到它。也就是说,数据表中的一行记录,其实可能有多个版本(row),每个版本有自己的row trx_id