2.max_id 是执行查询语句,最大的事务id,还是下一个要分配的事务id?
首先要知道mvcc是用来解决读写冲突的。读取的时候创建read-view,里面保存了活跃的事务id,从中选出最小最大。
然后再去数据库表中去看数据记录,拿这条记录的事务id和read-view中的事务id比较。你理解偏了。ps:数据库记录中除了保存自己定义的数据,还会有一些隐藏字段,修改改记录的事务id、只想unlog的指针等等