课程内容:
1.Undo日志版本链与ReadView机制详解
2.MVCC多版本并发控制机制详解
3.Innodb引擎BufferPool缓存机制详解
4.Redo与Undo日志详解
MVCC多版本并发控制机制
Mysql在可重复读隔离级别下如何保证事务较高的隔离性,我们上节课给大家演示过,同样
的sql查询语句在一个事务里多次执行查询结果相同(上节课讲到的是快照version),就算
其它事务对数据有修改也不会影响当前事务sql语句的查询结果。(在串行化中是直接查的
时候也是加锁,来实现的)
这个隔离性就是靠MVCC(Multi-VersionConcurrencyControl)机制来保证的,对一行
数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在
串行化隔离级别为了保证较高的隔离性是通过将所有操作加锁互斥来实现的。
Mysql在读已提交和可重复读隔离级别下都实现了MVCC机制。
undo日志版本链与readview机制详解
undo日志版本链是指一行数据被多个事务依次修改过后,在每个事务修改完后,Mysql会
保留修改前的数据undo回滚日志,并且用两个隐藏字段trx_id和roll_pointer把这些undo
日志串联起来形成一个历史记录版本链(见下图,需参考视频里的例子理解)