É verdade que
INSERT , UPDATE ou DELETE deve adquirir ROW EXCLUSIVE bloqueio na tabela a ser atualizado. No entanto, este bloqueio não impede
SELECT de trabalhar normalmente. SELECT requer apenas ACCESS SHARE trancar. Este bloqueio é compatível com ROW EXCLUSIVE - em outras palavras, você pode executar perfeitamente SELECT enquanto outros dados são atualizados por INSERT , UPDATE ou DELETE , contanto que você não adquira nenhum bloqueio explícito. Em outras palavras, você nunca deve ver nenhum impasse usando a segunda abordagem (apenas não use
SELECT FOR UPDATE e você vai ficar bem). Leia mais na documentação do PostgreSQL .