??什么是 Read View,说白了 Read View 就是事务进行快照读操作的时候生产的读视图 (Read View),在该事务执行的快照读的那一刻,会生成数据库系统当前的一个快照,记录并维护系统当前活跃事务的 ID (当每个事务开启时,都会被分配一个 ID , 这个 ID 是递增的,所以最新的事务,ID 值越大)
??所以我们知道 Read View 主要是用来做可见性判断的, 即当我们某个事务执行快照读的时候,对该记录创建一个 Read View 读视图,把它比作条件用来判断当前事务能够看到哪个版本的数据,既可能是当前最新的数据,也有可能是该行记录的undo log里面的某个版本的数据。
??Read View遵循一个可见性算法,主要是将要被修改的数据的最新记录中的 DB_TRX_ID(即当前事务 ID )取出来,与系统当前其他活跃事务的 ID 去对比(由 Read View 维护),如果 DB_TRX_ID 跟 Read View 的属性做了某些比较,不符合可见性,那就通过 DB_ROLL_PTR 回滚指针去取出 Undo Log 中的 DB_TRX_ID 再比较,即遍历链表的 DB_TRX_ID(从链首到链尾,即从最近的一次修改查起),直到找到满足特定条件的 DB_TRX_ID , 那么这个 DB_TRX_ID 所在的旧记录就是当前事务能看见的最新老版本.
文章插图
在这里插入图片描述
举例说明:
文章插图
在这里插入图片描述
分析:
文章插图
在这里插入图片描述
第二种情况:
文章插图
在这里插入图片描述
分析:
文章插图
在这里插入图片描述
最后完成的绘图:
文章插图
在这里插入图片描述
扩展阅读:https://www.ixiera.com
【 mysql|MySQL数据库的核心MVCC详解】总结:能否看到事务修改的数据,取决于可见性算法,可见性算法比较的时候又取决于ReadView中的结果值!因为在不同隔离级别的时候,生成ReadView的时机是不同的RC:每次执行时快照读都会重新生成新的ReadViewRR:只有当第一次事务进行快照读的时候才会生成ReadView,之后的快照读操作都会复用当前的ReadView 。
推荐阅读
- 数据|非法获取计算机信息系统数据罪-浅析计算机数据库系统在信息管理
- 信息数据库|安恒信息数据库审计中标中国移动集采项目
- ible server|Azure Database for MySQL Flexible Server上线
- 日本广播协会电视台|数据库存10万份错误记录?!日本新冠疫苗接种证明软件上线…
- 非法获取计算机信息系统数据罪-论计算机数据库系统在信息管理(1)
- l亚马逊云科技是如何造Serverless数据库的?
- 数据库进阶系列之开窗函数|九道门 | 函数
- 图数据库厂商「创邻科技」完成36氪独家 | 高性能
- 数据库|计算机数据库系统在信息管理中的应用
- 数据库|历史上的五大数据泄露事件,你知道几个?