[MySQL] MVCC 多版本并发控制实现的事务

[MySQL] MVCC 多版本并发控制实现的事务,第1张

概述1.没有一个统一的实现标准,实现了非阻塞的读 *** 作,写 *** 作也只锁定必要的行2.通过保存数据在某个时间点的快照实现的3.典型的有乐观并发控制和悲观并发控制4.innodb的mvcc是每次事务都有递增的版本

1.没有一个统一的实现标准,实现了非阻塞的读 *** 作,写 *** 作也只锁定必要的行
2.通过保存数据在某个时间点的快照实现的
3.典型的有乐观并发控制和悲观并发控制
4.innodb的mvcc是每次事务都有递增的版本号,通过在每行记录的后面添加两列隐藏字段,两列分别是是创建版本号和删除版本号,存储 *** 作它事务的版本号
5.在事务中增删改查就是对两列版本号字段进行 *** 作

insert 为新插入的每一行保存当前事务版本号到 行创建版本号字段
update 插入一行新的保存当前事务创建版本号,修改原行数据的删除版本号为本次事务的版本号
delete 修改行的删除版本号字段为本次事务的版本号
select 查询 创建版本号字段 小于等于当前事务版本的数据 确保该记录是本次之前就存在的或本次事务新插的
查询 删除版本号字段 不存在或者大于当前版本的数据 确保该记录在本次事务之前没删除

6.这样的设计就不需要加锁了,读和 *** 作性能好,但是需要额外的存储空间
7.mvcc只在REPEAtable READ和READ COMMITED两个隔离下工作;READ UNCOMMITED总是读取最新数据;SERIAliZABLE对读取的行都加锁

总结

以上是内存溢出为你收集整理的[MySQL] MVCC 多版本并发控制实现的事务全部内容,希望文章能够帮你解决[MySQL] MVCC 多版本并发控制实现的事务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1152721.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存