- Java na serwerze - kurs przetrwania. Obóz drugi. Od serwletów do Sp...Cena: 39.90 zł
- Antywzorce języka SQL. Jak unikać pułapek podczas programowania baz...Cena: 34.50 zł
- Praktyki mistrza SQL. Programowanie zaawansowaneCena: 77.35 zł
- NoSQL, NewSQL i BigData. Bazy danych następnej generacjiCena: 35.69 zł
Spójne SELECTy
Spójrzmy na proces transakcji z poziomu dwóch różnych sesji.
Sesja 1
mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO tab (f) VALUES (1); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM tab; +---+ | f | +---+ | 1 | +---+ 1 row in set (0.00 sec) |
Sesja 2
mysql> SELECT * FROM tab; Empty set (0.00 sec) |
A zatem wykonując to samo polecenie SELECT z poziomu różnych sesji (jednej, w czasie której wykonujemy transkację i drugiej, w czasie której polecenia sa wykonywane "na zewnątrz" transkacji) dostaniemy dwa różne rezultaty.
Dopiero po wykonaniu COMMIT w sesji pierwszej, wynik będzie taki sam z poziomu obu sesji.
Sesja 1
mysql> COMMIT; Query OK, 0 rows affected (0.00 sec) |
Sesja 2
mysql> SELECT * FROM tab; +---+ | f | +---+ | 1 | +---+ 1 row in set (0.00 sec) |
Taką właściwość nazywa się spójnym czytaniem lub spójnym SELECT. Każdy wykonany SELECT zwraca dane aktualne do ostatnio ZAKOŃCZONEJ transakcji.
Źródło: http://gryf.mif.pg.gda.pl/~mate/wyklady/bazy/transakcje.html
Listing
Ranga: Administrator serwisu Punktów: 38523