What is the behavior of mvcc under innodb's read-uncommitted isolation level?

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?

Mar.28,2021

you are reading what is not submitted and what mvcc
mvcc is mainly to solve the problem of illusory reading. The generation of
snapshot is to let others read the data before you modified. You all read what snapshot you did not submit.
then the snapshot is generated when you take the data, whether you want select or update, will generate a snapshot
after modification. Isn't it necessary to keep a snapshot of the data in the entire database? no, no, no.
you also need to understand these concepts


laxatives. I'm not familiar with this area. I'm sorry.


you first have a good understanding of the concept of the four isolation levels of the transaction, and then you can understand the concept of snapshot. Generally speaking, if you understand the isolation level thoroughly, you will know how to operate, and you don't have to bother as much as you think


what F did above should also be a snapshot read. Did you take a snapshot immediately after the 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?

The data read by

F is a snapshot before the start of A transaction. The update operation of A transaction before completion is not visible to F of other connection. If F is also updated, you need to wait for A transaction to end

.
Menu