STATEMENT_TIMEOUT
Olá amigos!! neste tópico eu gostaria de compartilhar uma boa dica para a você que usa o postgreSQL. Primeiro vou perguntar a você referente a um problema que já aconteceu comigo. Você já passou pela situação de estar desenvolvendo e o banco entrar em um “ loop eterno” por uma falha do programador através da linguagem plpgsql ou mesmo por um erro na instrução? Desta forma o banco se perde atrás de um registro que custa a ser encontrado ou na maioria das vezes não é encontrado.
O problema é que quando isso acontece praticamente travamos o BD para todos os outros usuários, prendemos o banco em uma atividade gerada por um erro de instrução e sempre nestes casos a solução paliativa é reiniciar o serviço do SGBD.
Este problema pode ser evitado, você já ouviu falar em statement_timeout? Não? Sem problemas vou lhe explicar, para cada login role ou simplesmente cada usuário criado você pode criar uma variável que determinará o tempo máximo que este usuário terá para realizar qualquer operação, seja ela qualquer das 4 instruções básicas ou outros comandos sql que ele realizará no banco de dados.
Como configurar isso? É fácil a dica está abaixo:
O comando é o seguinte : alter role nome_role set statement_timeout = 300000 , o valor integer(inteiro) tem que ser em milisegundos neste caso 300000 equivale a 5 minutos,
na verdade statement_timeout é uma variável, e seguindo pela ferramenta PGADMIN III o caminho para configurar seria o seguinte:
Clique com botão direito em login roles desejado, clica em properties e em seguida na penúltima aba variable, logo abaixo existirá uma lista dinâmica com a descrição variable name, clicando na lista é só procurar a variável statement_timeout e logo abaixo definir seu valor, eu fiz vários testes coloquei alguns segundos e vi que funcionou perfeitamente quando tentei abrir um view com o login role que escolhi.
Espero ter ajudado com a dica.
Michel Calixto.