MVCC与覆盖索引

1 · · Aug. 25, 2022, 1:47 p.m.
近期看到这样一个问题:走覆盖索引不用回表,但是如何用MVCC判断可见性?因为二级索引上没有隐藏列trx_id和roll_ptr。而MVCC是基于trx_id和roll_ptr。那走覆盖索引如何判断是否可见呢?前置知识参考资料https://www.modb.pro/db/173167https://www.zhihu.com/question/27674363/answer/38034982《Innodb存储引擎》以下讨论基于Innodb的RR隔离级别聚簇索引行记录根据《Innodb存储引擎》:InnoDB每行有隐藏列TransactionID和Roll Pointer其中TransactionID是用于记录修改该记录的最新事务id,用于MVCC判断可见性及回滚。而Roll Pointer也就是回滚指针,用于配合undolog进行数据版本回溯。二级索引记录问题中提到二级索引上没有隐藏列trx_id和roll_ptr,这的确是正确的。但二级索引的页面具有PAGE_MAX_TRX_ID,用于记录修改页内数据的最新事务id。所以如果PAGE_MAX_TRX_ID的值是在Read View创建...