Criar uma Loja Virtual Grátis
Translate to English Translate to Spanish Translate to French Translate to German Google-Translate-Portuguese to Italian Translate to Russian Translate to Chinese Translate to Japanese




ONLINE
1




Partilhe esta Página



Total de visitas: 22672
Limitando uma query no PostgreSQL
Limitando uma query no PostgreSQL

               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.