MVCC
2020-02-06 13:15:01 0 举报
描述MVCC的核心流程
作者其他创作
大纲/内容
3
name
1
2
删除jack这条数据
tom的创建版本号大于当前的事务版本号
MVCC查找规则:只能查找创建版本号小于等于当前事务的创建版本号的数据,和删除版本号大于当前事务删除版本号的数据。因为事务4删除jack这条数据后,删除版本号为4,比我当前的事务删除版本号ID大,所以 jack 依然可以查出来。所以还是这两条数据。
yangping
id
创建版本
4
undefined
假设在事务5之后执行第四次查询
select * from mvcctest ; (3) 第三次查询
插入一条数据
创建版本的事务id为3
Transaction 4
更新数据的数据的时候,把之前的数据的删除版本号设置为5,然后新增一条修改后的数据并把创建版本号设置为5
初始化数据
Transaction 2
删除版本
jack
Transaction 3
假设在事务3之后执行第二次查询
begin;update mvcctest set name ='盆鱼宴' where id=1;commit;
tom
begin;delete from mvcctest where id=2;commit;
MVCC 的查找规则:只能查找创建版本号小于等于当前事务的创建版本号的数据,和删除版本号大于当前事务删除版本号的数据。也就是不能查到在我的事务开始之后插入的数据,tom 的创建版本号ID 大于 2,所以还是只能查到两条数据。
删除版本的事务id为4
假设在事务4之后执行第三次查询
5
盆鱼宴
一个事务中查询两次
select * from mvcctest ; (2) 第二次查询
Transaction 5
select * from mvcctest ; (4) 第四次查询
更新yangping这条数据
jack的删除版本号大于当前事务版本号
MVCC查找规则:只能查找创建版本号小于等于当前事务的创建版本号的数据,和删除版本号大于当前事务删除版本号的数据。因为事务5更新了yangping这条数据后,删除版本号为5,比我当前的事务删除版本号ID大,所以yangping 依然可以查出来。所以还是这两条数据。
begin;select * from mvcctest ; -- (1) 第一次查询
Transaction 1
0 条评论
下一页