On 12/22/23 10:53, Kristian Nielsen wrote:
I don't think this is based on any specific source. Rather, it's starting
from how InnoDB takes read/write locks and thinking through what this means
in terms of behaviour:

   READ COMMITTED - no read locks, only write locks, new snapshot each
   statement.

   REPEATABLE READ - no read locks, but keep the snapshot (for SELECTs) over
   the transaction.

   SERIALIZABLE - both read and write locks.

Ah, this is a good intuition, and roughly how I understood things too. The thing is that RR's behavior isn't consistent with *any* kind of snapshot behavior I'm familiar with. Like the point of a snapshot is generally that it's not affected by other transactions' writes, but RR "snapshots" *are* modified by other transactions' writes. Even worse, you can wind up with "impossible" snapshots like this:

T1: w(x, 1), w(y, 2)
T2: ...              r(y, 2), r(x, 1)

Here, T2's "snapshot" was clearly taken after T1's write of y=2, but did *not* reflect T1's write of x=1. Violates both atomicity and monotonicity!

--Kyle
_______________________________________________
discuss mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to