Toc
  1. 解决了什么问题
  2. 实现方式
Toc
0 results found
BOBO
MVCC
2021/03/02 MySQL

Multi-Version Concurrency Control 多版本并发控制

解决了什么问题

  1. 使得数据库读操作不会对数据加锁,提高并发请求能力
  2. 借助 MVCC 实现多种隔离级别,保证 ACID 当中的隔离性

实现方式

  • 每个 SQL 都会创建 ReadView(ReadView 是当前所有事物 ID 集合)
  • 当新的 SQL 执行时,拿当前的事物 ID 和所有 ReadView 进行比较,然后决定是否从 undo log 中读取数据
  • READ-COMMITTED  事务内的每个查询语句都会重新创建 Read View,这样就会产生不可重复读现象发生
  • REPEATABLE-READ  事务内开始时创建 Read View , 在事务结束这段时间内 每一次查询都不会重新重建 Read View ,都会重复复用第一个 ReadView 从而实现了可重复读
支付宝
微信
Simple is Awesome