[MySQL]MVCC多版本并发控制实现的事务
1.没有一个同一的实现规范,实现了非阻塞的读操纵,写操纵也只锁定须要的行
2.通过保留数据在某个工夫点的快照实现的
3.典型的有悲观并发控制和乐观并发控制
4.innodb的mvcc是每次事务都有递增的版本号,通过在每行记载的背面增加两列隐蔽字段,两列离别是是新建版本号和删除版本号,存储操纵它事务的版本号
5.在事务中增删改查就是对两列版本号字段进行操纵
insert 为新插入的每一行保留目前事务版本号到 行新建版本号字段
update 插入一行新的保留目前事务新建版本号,修改原行数据的删除版本号为本次事务的版本号
delete 修改行的删除版本号字段为本次事务的版本号
select 查询 新建版本号字段 小于等于目前事务版本的数据 确保该记载是本次以前就存在的或本次事务新插的
查询 删除版本号字段 不存在或者大于目前版本的数据 确保该记载在本次事务以前没删除
6.这样的设计就不需要加锁了,读和操纵机能好,但是需要额外的存储空间
7.mvcc只在REPEATABLE READ和READ COMMITED两个隔离下工作;READ UNCOMMITED总是读取最新数据;SERIALIZABLE对读取的行都加锁
【举荐课程:mysql视频教程】
以上就是[MySQL] MVCC多版本并发控制实现的事务的细致内容,更多请关注 百分百源码网 其它相干文章!