Prawdą jest, że INSERT
, UPDATE
lub DELETE
musi uzyskać ROW EXCLUSIVE
zablokuj na stole do aktualizacji.
Jednak ta blokada nie uniemożliwia SELECT
od normalnej pracy. SELECT
wymaga tylko ACCESS SHARE
Zamek. Ta blokada jest zgodna z ROW EXCLUSIVE
- innymi słowy, możesz perfekcyjnie wykonać SELECT
podczas gdy inne dane są aktualizowane przez INSERT
, UPDATE
lub DELETE
, o ile nie uzyskasz żadnych wyraźnych blokad.
Innymi słowy, nigdy nie powinieneś widzieć żadnych zakleszczeń przy użyciu drugiego podejścia (po prostu nie używaj SELECT FOR UPDATE
i wszystko będzie dobrze).
Przeczytaj więcej w dokumentacji PostgreSQL .