MySQL的Read View简介

在这里插入图片描述

1 问题背景

最近在研究MySQL的MVCC知识,常看到有提到一个Read View关键字。

2 前言

本文有部分知识点会比较晦涩难懂,如果对MVCC还没了解的伙伴,推荐配合阅读【MySQL笔记】正确的理解MySQL的MVCC及实现原理,再配合MySQL官方文档,综合反复阅读,才能品味其中的意义。

3 什么是Read View

官方文档原文介绍:Read View

原文:

read view
An internal snapshot used by the MVCC mechanism of InnoDB. Certain transactions, depending on their isolation level, see the data values as they were at the time the transaction (or in some cases, the statement) started. Isolation levels that use a read view are REPEATABLE READ, READ COMMITTED, and READ UNCOMMITTED.

笔者翻译:Read View是一个数据库的内部快照,该快照被用于InnoDB存储引擎中的MVCC机制。简单点说,Read View就是一个快照,保存着数据库某个时刻的数据信息。Read View会根据事务的隔离级别决定在某个事务开始时,该事务能看到什么信息。就是说通过Read View,事务可以知道此时此刻能看到哪个版本的数据记录(有可能不是最新版本的,也有可能是最新版本的)。可重复读、读已提交、读未提交,这几个隔离级别都会使用Read View

4 总结

我要查询name = 'zhangsan'的用户的记录并修改某些值,开启事务并在此时生成一个Read View快照。InnoDB根据Read View来判断'name = 'zhangsan'记录的版本链上哪个版本是可见的。怎么判断?通过把每个版本记录的trx_id隐藏字段与Read View的三个字段做比较。此处的比较涉及到算法,后面另写一篇文章详细介绍。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值