下图以Repeatable Read为例,演示MVCC如何工作:
每行有两个隐藏列:transaction_id和roll_pointer。...在事务A提交之前,事务B读取余额数据。事务B发现transaction_id 201尚未提交,它读取下一个已提交的记录(transaction_id=200)。...事务ID(Trx ID):每个事务开始时,会分配一个唯一的事务ID,用于标识事务在时间轴上的位置。...快照(Snapshot):当事务开始时,MySQL 会为其创建一个快照,快照中包含此时数据页中所有版本和对应事务ID。事务执行期间,所有读请求都在此快照中查找版本。...时间轴位置判断:事务需要判断其他版本的事务ID是否早于自己,以判断其是否可见。如果早于自己,说明其已提交,自己可见;否则,不可见。