java 的MVCC机制 有些小疑惑

java 的MVCC机制 有些小疑惑

问题描述:

  1. MVCC里面的 read-view 是不是只有活跃id数组和max_id,有没有保存当前生成这个read-view的事务id

2.max_id 是执行查询语句,最大的事务id,还是下一个要分配的事务id?

首先要知道mvcc是用来解决读写冲突的。读取的时候创建read-view,里面保存了活跃的事务id,从中选出最小最大。

然后再去数据库表中去看数据记录,拿这条记录的事务id和read-view中的事务id比较。你理解偏了。
ps:数据库记录中除了保存自己定义的数据,还会有一些隐藏字段,修改改记录的事务id、只想unlog的指针等等