sexta-feira, 3 de fevereiro de 2012

PostgreSQL - Liberando sessões "sem medo"

PostgreSQL: Imagine o seguinte cenário, 2 mil locks na base, banco parado e você precisa fazer algo.

Para estas situações recorra ao SHELL, ele é seu amigo:

Primeiro identifique os processos:

for id in `ps -ef | grep transaction | awk '{print $2}'`; do echo $id; done

Se todos realmente forem sessões prendendo ou você não tem tempo para identificar e pode contar com a perda de conexões, mande o comando:

for id in `ps -ef | grep transaction | awk '{print $2}'`; do `kill -15 $id`; done

Pronto, todo mundo que estava em transação pendente morreu. Mas os locks foram liberados e o banco segue feliz, agora o próximo passo é mais complexo, é descobrir, 'POR QUÊ?'. Esse fica pro próximo post.