MySQL中RR级别下的MVCC

众所周知MySQL中InnoDB的可重复读是通过MVCC实现的。

MVCC是由哪些元素构成?

MVCC的读 又叫快照读,在MySQL中不可能把整个表的数据拷贝一份来提供这个快照。它通过

      1、undolog

           InnoDB增删数据时除了redo log外还会记录undo log。

           以update举例: undolog->修改内存中数据页->redolog prepare->binlog-> commit; 修改数据时 undo log记录原始数据。用于以后或许会发生的回滚操作。

      2、表中的的隐藏列 data_trx_id,data_roll_pt

            一张表中有三个隐藏列

            rows_id: MySQL给予行的一个标识。如果表中没有主键,那么就会使用row_id来组织数据。

            data_trx_id: 事务id,创建一个新的事务,会分配一个自增的全局唯一的data_trx_id。

            需要说明的是:begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。

            data_roll_pt: 回滚指针,这个指针指向undo log中的一行记录原始记录。

      3、Read View数组

            创建事务时,InnoDB为事务创建了一个Read View的数组用来记录创建事务时刻的当前活跃事务data_trx_id。

            

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值