之前提到了MVCC可以一定程度上避免幻读,那具体MVCC是咋工作的呢?
需要介绍两个机制read view聚簇索引两个隐藏列

read view

这个就是我们理解快照,有四个字段,本事务id、活跃事务id列表包含自己)、活跃事务id最小的(还没提交事务里最早开始的)、下一个事务id(不一定是活跃事务表中最大值+1)

在这里插入图片描述

聚簇索引中的隐藏列

trx_id代表行数据是由哪个事务更新的,undo_log是关键的版本控制指针。就是用read view里的m_ids看这条记录当前事务可见与否,可见就读不可见就顺着链表向下找。
在这里插入图片描述
在这里插入图片描述

工作方式

重复读是启动事务生成一个 Read View,然后整个事务期间都在用这个 Read View。
提交是在每次读取数据时,都会生成一个新的 Read View。
在这里插入图片描述

原文地址:https://blog.csdn.net/pige666/article/details/134729711

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24884.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注