Nie rozumiem blokad wyłącznych (X). Z tego co wyczytałem to jeśli transakcja T1 blokuje tabelę trybem wyłącznym, to tylko ona uzyskuje prawo do wykonywania na niej zmian oraz odczytywania wartości.
Tymczasem, w mySQLu wykonuję następującą transakcje:
T1:
START TRANSACTION;
LOCK TABLE dane WRITE;
UPDATE dane SET x=2;
UNLOCK TABLES;
COMMIT;
oraz T2
START TRANSACTION;
UPDATE dane SET x=0;
COMMIT;
przy czym najpierw wywoływane są pierwsze trzy linijki transakcji T1, potem cała T2 i na końcu ostatnie dwie linijki T1 (z poziomu języka wysokiego poziomu).
Oczekiwałbym, że skoro T1 blokuje tabele i wykonuje na niej operacje to dopóki transakcja się nie zakończy to żadna inna nie będzie miała prawa dostępu do danych i ich zmieniania. Ale tak się niestety nie dzieje bo ostatecznie w tabeli dane na atrybucie x mam zera. Czyli ewidentnie widać, że T2 wykonała zapytanie mimo że T1 założyła blokadę...