> Eu tenho uma plpgslq que requisita um lock ACCESS EXCLUISIVE
>
> lock table tb_processamento_tmp in ACCESS EXCLUSIVE mode;

Pra quê essa agressividade toda?
Lock pessimista está fora de moda :)

> Esse tipo de lock pode cancelar o autovacuum?

Sim.

> Caso esse lock seja o problema, existe alguma forma de que essa pl seja
> sincronizada. Pois o software que a chama é multi-thread e além disso esse
> software pode estar rodando em mais de uma maquina, por isso não ha como
> sincronizar na aplicação.

Fazer um lock numa tabela toda não é algo muito utilizado em
aplicações modernas, ainda mais multi-thread.
É o maior causador de race conditions que eu conheço. Já tive dezenas
de clientes com problemas assim (causando um lock bloqueia dezenas de
outras threads, não é nem o problema de cancelar limpeza).
A recomendação sempre foi ajustar a aplicação e não usar um lock desse
tipo, adotar uma estratégia que permita a concorrência é mais
interessante.

> Você tem alguma ideia? talvez advisory locks ou algum outro lock.

Aí precisamos saber qual é a idéia desse lock. Por que você faz esse
lock. Qual a necessidade de sua aplicação fazer isso.

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a