关于MVCC的一些理解2022-01-15

mvcc是通过两个隐藏字段来实现的 一个事务删除列 一个事务开始列。

  1. 【关于MVCC的一些理解2022-01-15】select语句
    1. 只会查找版本早于或等于当前版本的事务的数据,这样可以保证事务的读取的行,要么在事务开始前就开始,要么是事务自己操作的数据
    2. 读取行的删除版本号要么未定义,要么大于事务当前版本号。
  2. insert语句
    1. 将当前事务的版本记录到插入数据行的事务开始列
  3. delete语句
    1. 将当前事务版本记录到当前数据行的删除列
  4. uodate语句
    1. 将当前事务的版本记录到新插入一条数据数据行的事务开始列,同时记录到原数据的删除列
MVCC只工作在可重复读和读已提交两个隔离级别 其他的不兼容。串行化是因为会对所有数据行直接加锁 读未提交是因为每次读到都是最新最新数据 不需要事务版本这种来控制

    推荐阅读