1.MVCC多版本并发控制书接上回:CSDN
1.1 undo日志版本链mvcc(muti version Concurrent Control)多版本并发控制是mysql在可重复读和读已提交级别下的一种保证事物隔离性的机制。
面试大厂考点,不用解释特别清楚,大概讲解即可。
mvcc内有两个重点概念:undo日志版本链(决定是否能查找到对应数据)和read view一致性视图(决定是否可见)。每次开启事物begin命令时mysql都会生成一个临时事物id,当执行具体sql时会生成真正的事物id,mysql会通过这个事物id去undo日志版本链中比对,并通过对readview生成的数组中比对最终找到当前事物数据。
undo日志版本链中有一列数据+两个隐藏字段trx_id(事物id)和回滚指针(roll_pointer)组成。指针指向上一个版本中的数据。
undo日志版本链比对规则:
1. 当前事物id
2. min_trx_id<=当前事物id<=max_trx_id,代表可能有未提交和已提交事物,可能可见也可能不可见。可见对应已提交事物,不可见对应未提交事物。
3. 当前事物id>max_trx_id,代表为未开始事物,不可见。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)