undo&redo&ibdata1---杂

本文解析了InnoDB中Read-View的工作机制,阐述了事务开始时并不立即创建Read-View,而是在执行第一条SELECT语句时创建。Read-View用于决定事务能够看到哪些版本的数据,确保在REPEATABLE-READ隔离级别下实现可重复读。

【关于innodb的read-view的一点理解】

  1.  InnoDB 的read-view的建立,是从事务begin后,发送第一个select的时候建立的,而不是begin的时候建立的,
    也就是说,在发送第一个SQL后,事务才被赋予了一个transactionID,才建立了它的read-view,才决定了它能看到哪些版本的数据,不能看到哪些版本
    至于begin, 在这方面并没有什么实际意义

  2. 一旦事务A被赋予了一个transactionID,就会确定一个它相关的read-view,并且一直保持不变
    read-view的可见原则是“在事务A发送第一个SQL的时候,还没完成commit的那些事务B,C,D对数据做出修改后的生成新版本数据,A都看不见“
    即使后续B,C,D都先于A 进行了commit,A还是看不见那些B,C,D 生成新版本数据”    (隔离级别  REPEATABLE-READ)
    也就是说,事务A能看到哪些版本的数据,不能看到哪些,从它被赋予transactionID的一刻就确定了(它的read-view就确定了),且不会改变,这样才能做到 “可重复读”







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值