MySQL多版本并发控制机制(MVCC)源码浅析
|
由上面的lock_clust_rec_cons_read_sees可知,行版本可见性由read_view_sees_trx_id函数判断:
其实上述函数就是一个二分法,read_view其实保存的是当前活跃事务的所有事务id,如果当前行版本对应修改的事务id不在当前活跃事务里面的话,就返回true,表示当前版本可见,否则就是不可见,如下图所示。
接上述lock_clust_rec_cons_read_sees的返回:
undolog搜索可见版本的过程 我们现在考察一下row_sel_build_prev_vers_for_mysql函数:
主要是调用了row_ver_build_for_consistent_read方法返回可见版本:
整个过程如下图所示:
至于undolog怎么恢复出对应版本的row记录就又是一个复杂的过程了,由于篇幅原因,在此略过不表。 read_view创建时机再讨论 在创建一致性视图的row_search_for_mysql的代码中
trx_assign_read_view中由这么一段代码
(编辑:网站开发网_安阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |








