登录
首页 >  数据库 >  MySQL

MySQL的MVCC

来源:SegmentFault

时间:2023-02-24 17:20:56 163浏览 收藏

哈喽!今天心血来潮给大家带来了《MySQL的MVCC》,想必大家应该对数据库都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到MySQL、InnoDB,若是你正在学习数据库,千万别错过这篇文章~希望能帮助到你!

MVCC(多版本并发控制)

作用:很多情况下可以避免加锁操作,降低开销。

InnoDB下的MVCC

通过在每行记录后面保存两个隐藏的列来实现,行的创建时间、行的过期时间(删除时间)。这里的时间指的是系统版本号,每开始一个新的事物,系统版本号都会自增。事物开始时刻的系统版本号会作为事物的版本号,用来和查询到的每行记录的版本号进行比较。

REPEATABLE READ隔离级别下MVCC的具体操作

SELECT

  • InnoDB 只查找版本早于当前事物版本的数据行(行的系统版本号
  • 行的删除版本要么未定义,要么大于当前事物版本号。这样可以确保事物读取到的行,在事物开始之前未被删除。

符合上面两个条件的记录才能返回做完查询结果。

INSERT

  • InnoDB 为新插入的每一行保存当前系统版本号作为行版本号。

UPDATE

  • InnoDB 为插入一行新记录,保存当前系统版本号作为行版本号,同时保存当前系统版本号到原来的行作为行删除标识。

DELETE

  • InnoDB 为删除的每一行保存当前系统版本号作为删除标识。
摘自《高性能MySQL》

本篇关于《MySQL的MVCC》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>