MVCC — co widzą równoległe transakcje?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
MVCC utrzymuje wersje wierszy, a transakcje czytają dane zgodnie z regułami widoczności swojego snapshotu. Zwykły odczyt może więc korzystać ze starszej widocznej wersji podczas zapisu nowej.
Przykład: jedna transakcja aktualizuje rekord, a zwykły SELECT innej nie czyta jej niezatwierdzonej zmiany.
Doprecyzowanie: MVCC nie oznacza braku blokad. Dwa zapisy tego samego wiersza mogą na siebie czekać. Poziom izolacji wpływa na to, kiedy ustalany jest widok danych.
Pułapka: MVCC nie eliminuje automatycznie wyścigu typu „odczytaj, oblicz, zapisz”. Starsze wersje wymagają sprzątania przez VACUUM.
To rozwinięcie tematu internals wymienionego przez autora, nie cytat z konkretnego pytania.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.