赞
踩
最近在研究MySQL的MVCC知识,常看到有提到一个
Read View
关键字。
本文有部分知识点会比较晦涩难懂,如果对MVCC还没了解的伙伴,推荐配合阅读【MySQL笔记】正确的理解MySQL的MVCC及实现原理,再配合MySQL官方文档,综合反复阅读,才能品味其中的意义。
官方文档原文介绍: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
。
我要查询name = 'zhangsan'
的用户的记录并修改某些值,开启事务并在此时生成一个Read View快照。InnoDB根据Read View来判断'name = 'zhangsan'
记录的版本链上哪个版本是可见的。怎么判断?通过把每个版本记录的trx_id
隐藏字段与Read View的三个字段做比较。此处的比较涉及到算法,后面另写一篇文章详细介绍。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。