Chciałem sprawdzić jak działa snapshot w MySQL. W tym celu najpierw stworzyłem tabelę z kulkami

CREATE TABLE kulki(kolor TEXT);
INSERT INTO kulki VALUES ('Czarna'),('Biala');

A następnie równocześnie wykonuję dwie transakcje:

START TRANSACTION WITH CONSISTENT SNAPSHOT;
	SET AUTOCOMMIT = 0;
	UPDATE kulki SET kolor = 'Biala' WHERE kolor = 'Czarna';
COMMIT;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
	SET AUTOCOMMIT = 0;
	UPDATE kulki SET kolor = 'Czarna' WHERE kolor = 'Biala';
COMMIT;

Oczekiwałbym, że po zakończeniu działania w tabeli kulki będą kulki różnokolorowe.

Jeśli poziom izolacji transakcji jest ustawiony na REPEATABLE READ to zawsze ten drugi UPDATE czeka, aż ten pierwszy zostanie zakończony. Wygląda to tak, jakby UPDATE zakładał automatycznie blokadę wyłączną.

Jeśli zaś poziom izolacji jest ustawiony na READ UNCOMMITED lub READ COMMITED to wszystko działa ok. Jednak gdy transakcje wystartowałem bez WITH CONSISTENT SNAPSHOT to również otrzymywałem różne kolory. Tak jakby ta część WITH CONSISTENT SNAPSHOT nie miała żadnego znaczenia.

Jest ktoś w stanie to wyjaśnić?