Вярно е, че INSERT
, UPDATE
или DELETE
трябва да придобие ROW EXCLUSIVE
заключване на таблицата за актуализиране.
Това заключване обаче не предотвратява SELECT
от нормална работа. SELECT
изисква само ACCESS SHARE
ключалка. Тази ключалка е съвместима с ROW EXCLUSIVE
- с други думи, можете перфектно да изпълните SELECT
докато други данни се актуализират чрез INSERT
, UPDATE
или DELETE
, стига да не придобиете никакви изрични заключвания.
С други думи, никога не трябва да виждате задънени блокировки, използвайки втория подход (просто не използвайте SELECT FOR UPDATE
и ще се оправиш).
Прочетете повече в документацията на PostgreSQL .