事务中的隔离性(MVCC)

xiaojiuaigc@163.com 发布于 2024-11-10 443 次阅读


MySQL中的多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突

  • 隐藏字段
  • trx_id(事务id),记录每一次操作的事务id,是自增的
  • roll_pointer(回滚指针),指向上一个版本的事务版本记录地址
  • undo log
  • 回滚日志,存储老版本数据
  • 版本链:多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过roll_pointer指针形成一个链表
  • readView解决的是一个事务查询选择版本的问题
    • 根据readView的匹配规则和当前的一些事务id判断该访问那个版本的数据
    • 不同的隔离级别快照读是不一样的,最终的访问的结果不一样

    RC :每一次执行快照读时生成ReadView

    RR:仅在事务中第一次执行快照读时生成ReadView,后续复用