MVCC详解

本文详细介绍了MySQL的MVCC(多版本并发控制)机制,包括快照读和当前读的概念,MVCC的工作原理以及其在不同隔离级别(如读已提交RC和可重复读RR)下的差异。通过MVCC,MySQL能够提高并发性能并解决事务隔离问题,但RC级别存在不可重复读的问题。
摘要由CSDN通过智能技术生成

MVCC面试经典问题

  1. 什么是快照读和当前读?
  2. 了解MVCC吗?说下什么是MVCC?
  3. MVCC的实现原理?有什么好处?
  4. RC和RR级别下MVCC的差异?
    (在最后作出解答。。)

MVCC实现的核心知识:

  1. 事务版本号
    每次事务开启前都会从数据库获得一个自增长的事务ID,可以从事务ID判断事务的执行先后顺序。
  2. 表格隐藏列
    trx_id :每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的 事务id 赋值给 trx_id 隐藏列。
    roll_pointer :每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到 undo日志 中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。
  3. Undo log
    Undo log主要用于记录数据被修改之前的日志,在表信息修改之前先会把数据拷贝到undo log中,当事务进行回滚操作是可以通过undo log里的日志进行数据还原。
    用于MVCC快照读的数据,在MVCC多版本控制中,通过读取undo log的历史版本数据可以实现不同事务版本号都拥有自己独立的快照数据版本。
  4. 每次对记录进行改动,都会记录一条 undo日志 ,每条 undo日志 也都有一个 roll_pointer 属性( INSERT 操作对应的 undo日志 没有该属性,因为该记录并没有更早的版本)
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值