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