收录的文章

52 阅读1分钟

mysql数据库写的好的文章

MySQL行锁表锁和语句加锁分析

juejin.cn/post/709678…

MySQL事务和MVCC

juejin.cn/post/709637…

ReadView的使用

有了这个 ReadView,这样在访问某条记录时,只需要按照下边的步骤判断记录的某个版本是否可见

  1. 如果被访问版本的 trx_id 属性值 等于(=)ReadView 中的 creator_trx_id 值,意味着当前事务在访问它自己修改过的记录,所以该版本可以被当前事务访问。

  2. 如果 trx_id 小于(<min_trx_id ,表明生成该版本的事务在当前事务生成 ReadView 前已经提交,所以该版本可以被当前事务访问。

  3. 如果 trx_id 大于等于(>=min_trx_id ,表明生成该版本的事务在当前事务生成 ReadView 后才开启,所以该版本不可以被当前事务访问。

  4. 如果 trx_id 属性值在 min_trx_idmax_trx_id 之间,那就需要判断一下 trx_id 属性值是不是在 m_ids 列表中。

    • 如果在,说明创建 ReadView 时生成该版本的事务还是活跃的,该版本不可以被访问;
    • 如果不在,说明创建 ReadView 时生成该版本的事务已经被提交,该版本可以被访问