ReadView简单来说,就是你执行一个事务的时候,就给你生成一个ReadView,里面比较关键的东西有4个:
-
一个是m_ids,这个即使说此时有哪些事务在MySQL里执行还没提交的;
-
一个是min_trx_id,就是m_ids里最小的值;
-
一个是max_trx_id,就是说mysql下一个要生成的事务id,就是最大事务id;
-
一个是creator_trx_id,就是你这个事务的id
接下来举个例子来理解一下ReadView是怎么用的:
假设原来数据库里就有一行数据,很早以前就有事务插入过了,事务id是32,他的值就是初始值,如下图所示:
接着呢,此时两个事务并发过来执行了,一个是事务A(id=45),一个是事务B(id=59),事务B是要去更新这行数据的,事务A是要去读取这行数据的值得,此时两个事务如下图所示: