MySQL读取的记录和我想象的不一致
原文中文,约16400字,阅读约需40分钟。发表于: 。并发的事务在运行过程中会出现一些可能引发一致性问题的现象,本篇将详细分析一下。
介绍MySQL事务隔离级别设置和MVCC原理,可通过修改启动参数或SET语句改变隔离级别,MVCC通过版本链和ReadView实现,ReadView包含活跃事务的事务id列表、最小事务id、下一个事务id和生成该ReadView的事务id。ReadView的可见性规则总结如下:trx_id = creator_trx_id时,该版本可以被当前事务访问;trx_id < min_trx_id时,该版本可以被当前事务访问;trx_id ≥ max_trx_id时,该版本不可以被当前事务访问;min_trx_id ≤ trx_id ≤ max_trx_id之间,需要判断trx_id属性值是不是在m_ids列表中,如果在,该版本不可以被访问;如果不在,该版本可以被访问。