On 19-10-2012 12:22, Antonio Cesar wrote: > Pessoal estou criando uma script para roda vacuum no banco, porem encontrei > uma situação desagradavel quando existe alguns processos em "idle in > transaction". > Estou usando a função da seguinte maneira SELECT pg_terminate_backend(procpid) > FROM pg_stat_activity. > Ha algum problema com este procedimento? > Você não disse qual o comando (VACUUM ou VACUUM FULL) é utilizado no script. Se for VF, ele precisa de um AccessExclusive, ou seja, todas os comandos que se referem aquela tabela são bloqueados. Já o VACUUM precisa de um AccessExclusiveLock, ou seja, bloqueia basicamente comandos DDL na tabela incluindo criação de índices mas não comandos DML.
As transações no estado "idle in transaction" só vão atrapalhar se tiverem algum lock que conflita com o lock referente ao do comando utilizado (VACUUM ou VACUUM FULL). Leia mais sobre isso em [1]. Não é recomendado ficar "matando" conexões; ao invés disso, corrija a aplicação para que isso não ocorra. Uma outra recomendação é habilitar o autovacuum ao invés de ficar fazendo VACUUM manual. [1] http://www.postgresql.org/docs/current/static/explicit-locking.html -- Euler Taveira de Oliveira - Timbira http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
