mysql怎么解决不成反复读
mysql解决不成反复读的办法:采纳了mvcc多版本并发操纵,mvcc是利用在每条数据后面加了潜藏的两列,即创立版本号和删除版本号,每个事务在开端的时候都会有一个递增的版本号。
【相关学习引荐:mysql学习】
mysql解决不成反复读的办法:
mysql中,默许的事务隔离级别是可反复读(repeatable-read),为理解决不成反复读,innodb采纳了mvcc(多版本并发操纵)来解决这一问题。
mvcc是利用在每条数据后面加了潜藏的两列(创立版本号和删除版本号),每个事务在开端的时候都会有一个递增的版本号
新增:
insert into user (id,name,age)values(1,"张三",10);
更新:
update user set age = 11 where id = 1;
更新操纵采纳delete+add的方式来实现,第一将当前数据标记为删除
然后新增一条新的数据:
删除:删除操纵是直接将数据的删除版本号更新为当前事务的版本号
delete from user where id = 1;
查询操纵:
select * from user where id = 1;
查询操纵为了不查询到旧数据或已经被其他事务更换过的数据,需要知足如下前提:
1、查询时当前事务的版本号需要大于或等于创立版本号
2、查询时当前事务的版本号需要小于删除的版本号
即:create_version <= current_version < delete_version
这样就可以幸免查询到其他事务修改的数据
以上就是mysql如何解决不成反复读的具体内容,更多请关注百分百源码网其它相关文章!