mysql中的mvcc理解

是什么:MVCC指的是在读已提交、可重复读这两种隔离级别下,执行普通的select操作时,访问记录的版本链的过程,可以使不同事务的读写操作并发执行,提高性能。

MVCC = 隐藏字段 + undo log 版本链 + ReadView
1.隐藏字段:对于聚簇索引来说,每条记录都有trx_id和roll_pointer两个隐藏列。
trx_id:修改该记录的事务的id
roll_pointer: 每次记录修改的时候,旧的版本会记录在undolog中,roll_pointer指向该记录旧的版本。

2.undo log 版本链: 一个记录的历史版本在undolog中,使用roll_pointer串成一个链
mysql中的mvcc理解_第1张图片

3.ReadView
undolog中有一条记录的多个版本,ReadView解决的问题是读的时候应该读取哪个版本的问题
ReadView包含4个比较重要的字段:
1)creator_trx_id ,创建这个 Read View 的事务 ID。select不会产生事务id,只有update,insert,delete才会产生。
2)m_ids ,表示在生成ReadView时当前系统中活跃的读写事务的 事务id列表
3)min_trx_id: 活跃的事务id中的最小值。
4)

你可能感兴趣的:(MySQL,mysql,java,数据库)