PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Sperrmodus

Es stimmt, dass INSERT , UPDATE oder DELETE muss ROW EXCLUSIVE erwerben zu aktualisierende Tabelle sperren.

Diese Sperre verhindert jedoch nicht SELECT davon ab, normal zu arbeiten. SELECT benötigt nur ACCESS SHARE sperren. Dieses Schloss ist mit ROW EXCLUSIVE kompatibel - mit anderen Worten, Sie können SELECT perfekt ausführen während andere Daten durch INSERT aktualisiert werden , UPDATE oder DELETE , solange Sie keine expliziten Sperren erwerben.

Mit anderen Worten, Sie sollten niemals Deadlocks sehen, wenn Sie den zweiten Ansatz verwenden (verwenden Sie einfach nicht SELECT FOR UPDATE und es wird dir gut gehen).

Lesen Sie mehr in der PostgreSQL-Dokumentation .