Det är sant att INSERT
, UPDATE
eller DELETE
måste förvärva ROW EXCLUSIVE
lås på bordet som ska uppdateras.
Detta lås hindrar dock inte SELECT
från att arbeta normalt. SELECT
kräver bara ACCESS SHARE
låsa. Det här låset är kompatibelt med ROW EXCLUSIVE
- med andra ord, du kan perfekt köra SELECT
medan annan data uppdateras med INSERT
, UPDATE
eller DELETE
, så länge du inte skaffar några explicita lås.
Med andra ord, du bör aldrig se några dödlägen med andra tillvägagångssätt (använd bara inte SELECT FOR UPDATE
och du kommer att klara dig).
Läs mer i PostgreSQL-dokumentation .