quarta-feira, 5 de dezembro de 2012

Outro pulo do gato: O query timeout!

Caros leitores, hoje falarei sobre algo não menos importante do que o assunto tratado no post anterior. Considero que é também outro "pulo-do-gato" em se tratando de otimização de sistemas web: O "timeout de query"!
 
Tomando-se a velha premissa como base, ou seja, que o banco de dados é um recurso finito, disputado, e portanto sujeito a falhas, e considerando que uma query pode levar mais tempo do que o desejado para executar, então faz-se necessário o uso do "timeout de query".
 
A questão é que, se uma query demorar muito para retornar um resultado, o servidor de aplicação enfileirará requisições, o que é nosso maior temor - e deve ser evitado a qualquer custo.
 
O "timeout de query" funciona de forma muito similar ao "cache de queries". Mas, o intuito aqui é especificar um tempo que nossa aplicação considerará aceitável para a execução de uma query.
 
Em cada query do sistema, especifica-se em segundos, o tempo que aceitaremos para sua execução. Caso esse tempo seja atingido, o servidor de aplicação considerará que houve uma exceção. Um erro, provocado por estouro de tempo limite na execução da query.
 
Esse erro deve ser esperado e tratado pela nossa aplicação, que, em geral, informará ao usuário que a sua requisição não foi atendida dentro do tempo esperado.
 
A grande vantagem é que o usuário não tem a percepção de um sistema lento, agarrado, pelo contrário, para ele a aplicação continua no ar e respondendo adequadamente. Só que agora informando o que ocorreu e permitindo que ele tente novamente.
 
Sendo um dos grandes segredos de um sistema web estável e com alto uptime, o "query timeout" é  uma prática indispensável. Todas as queries do sistema devem utilizá-lo, sem exceção!
 
Até a próxima!

Nenhum comentário:

Postar um comentário