关于mysql:Repeatable-Read下的MVCC

38次阅读

共计 478 个字符,预计需要花费 2 分钟才能阅读完成。

MVCC 是 Repeatable Read 隔离级别才有的,Read Commited 没有,所有 RC 会呈现不可反复读的问题。上面对于 MVCC 的细节进行下转载:

InnoDB 的 MVCC,通过在每行记录前面保留两个暗藏的列来实现:一个保留了行的创立工夫,一个保留行的过期工夫(删除工夫),当然,这里的工夫并不是工夫戳,而是零碎版本号,每开始一个新的事务,零碎版本号就会递增。在 RR 隔离级别下,MVCC 的操作如下:

  • select 操作。
    InnoDB 只查找版本早于(蕴含等于)以后事务版本的数据行。能够确保事务读取的行,要么是事务开始前就已存在,或者事务本身插入或批改的记录。
    行的删除版本要么未定义,要么大于以后事务版本号。能够确保事务读取的行,在事务开始之前未删除。
  • insert 操作。将新插入的行保留以后版本号为行版本号。
  • delete 操作。将删除的行保留以后版本号为删除标识。
  • update 操作。变为 insert 和 delete 操作的组合,insert 的行保留以后版本号为行版本号,delete 则保留以后版本号到原来的行作为删除标识。

转载于:mysql 的 MVCC(多版本并发管制)

正文完
 0