mvcc 是通过两个暗藏字段来实现的 一个事务删除列 一个事务开始列。
-
select 语句
- 只会查找版本早于或等于以后版本的事务的数据,这样能够保障事务的读取的行,要么在事务开始前就开始,要么是事务本人操作的数据
- 读取行的删除版本号要么未定义,要么大于事务以后版本号。
-
insert 语句
- 将以后事务的版本记录到插入数据行的事务开始列
-
delete 语句
- 将以后事务版本记录到以后数据行的删除列
-
uodate 语句
- 将以后事务的版本记录到新插入一条数据数据行的事务开始列,同时记录到原数据的删除列
MVCC 只工作在可反复读和读已提交两个隔离级别 其余的不兼容。串行化是因为会对所有数据行间接加锁 读未提交是因为每次读到都是最新最新数据 不须要事务版本这种来管制