3. MVCC(只在RC、RR两个级别下生效)
通过<b>Undo Log和版本链</b>实现数据多版本
如何实现数据多版本?<br>Undo log: 用于存放数据被修改前的值。可以用于数据回滚。 -- 保证原子性<br>Redo log: 记录数据修改后的值。-- 保证持久性<br>-- 当系统崩溃时,虽然数据没有持久化,但是redo log已经持久化,系统可以根据redo log恢复到最新状态。<br>
版本链
DB_TRX_ID
记录每次对某条聚簇索引修改时的事务ID
DB_ROLL_PTR
记录上一次修改的undo log位置
通过ReadView生成策略实现事务隔离级别
作用:做可见性判断,维护了本事务不可见的其他活跃事务
举例
RC:事务中每条select都会创建ReadView
RR:在执行事务的第一条select的时候创建ReadView,后续这个事务中所有的select都复用这个对象。