
mysql维护了一条版本链, 每个事务对应的数据和上一个事务的指针。
在事务开始的时候,mysql会生成Readview, Readview中会记录当前活动的事务id。
在访问数据的时候, 获取数据的最大事务ID,用这个事务ID与Readview对比, 如果比Readview都小,说明是可以访问的, 就返回这条数据。
否则就认为这个记录不可以访问,用这个记录指向的上一个版本重新对比。
可重复读,就是在事务开始生成一个Readview,后面不会重新生成。 读已提交,就是在每次读的时候都重新生成一个Readview。
