Note that our current isolation level is read uncommitted, that is, the lowest isolation level. Dirty reading occurs at this level, and A transaction modifies a row of data, but in the case of uncommitted, this row of data is read by a behavior other than A transaction, referred to as F, which may be a B transaction, or a simple non-transaction type select, and then A transaction rolls back, and F reads dirty data. Everything seems to be going well now.
but I"m a little confused. We know that simple select under innodb are snapshot reads (provided by MVCC), so what F does above should also be snapshot readings. Did you take a snapshot immediately after A transaction modified that row of data? Otherwise, how could F read the version of the A transaction that was modified to that line? Should be F read A to which line before the revision of the version, right?
by the way, innodb takes a snapshot as long as the lock on which row of data is released? How is the snapshot triggered?