Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As definições de tempo limite no driver JDBC podem ser usadas para priorizar a resposta da aplicação. Por padrão, a maioria dos tempos limites do driver prioriza esperar por um resultado para assegurar a consistência dos dados. Certifique-se de escolher prazos de espera adequados às necessidades da sua candidatura.
Para a ligação inicial, loginTimeout utiliza-se:
-
loginTimeouté o tempo, em segundos, que o condutor espera para estabelecer uma ligação ao servidor. Se este valor for ultrapassado, é devolvido um erro e não se estabelece nenhuma ligação aberta. Um valor de zero indica que o timeout é o timeout padrão do sistema, que é de 30 segundos nas versões 11.2 e superiores. Para as versões 10.2 e inferiores, o tempo limite padrão é de 15 segundos. Qualquer valor diferente de zero é o número de segundos que o condutor deve esperar antes de esgotar uma ligação falhada. Se estiver sempre com dificuldades em estabelecer uma ligação com o driver JDBC, pode ser necessário aumentar este tempo para 90, ou até 120, segundos.
Uma vez estabelecida a ligação, queryTimeout, cancelQueryTimeout, e lockTimeout são usados durante execuções de instruções.
socketTimeout é usado para qualquer comunicação do driver com o servidor.
-
queryTimeouté o tempo, em segundos, em que o condutor aguarda, após enviar um comando execute ao servidor, para receber uma resposta do servidor com dados. Se este tempo for ultrapassado, o comando é cancelado. Ultrapassar este timeout não fecha a ligação. O valor padrão é -1, o que significa tempo limite infinito. -
cancelQueryTimeouté o tempo, em segundos, que o condutor espera por uma confirmação de cancelamento pelo servidor, antes de terminar ou fechar à força a ligação. Ou seja, o condutor espera o total decancelQueryTimeoutmaisqueryTimeoutsegundos antes de a ligação ser fechada. Definir este timeout para um valor diferente de zero garante que as aplicações podem manter-se responsivas caso haja falha de rede ou comunicação com o servidor, quando uma consulta já esgotou o tempo. O valor padrão desta propriedade é -1, que é um tempo de espera infinito. -
lockTimeouté o tempo de espera para que um bloqueio seja libertado, nos casos em que há uma instrução cujo execução é bloqueada por um bloqueio. Ultrapassar este timeout não resulta numa ligação fechada. O valor padrão desta propriedade é -1, que é um tempo de espera infinito. -
socketTimeoutAplica-se a todas as comunicações por socket com o servidor. Se o servidor interromper a comunicação com o driver, seja por não reconhecer ou responder aos dados, o driver espera pelo valor desocketTimeoutantes de fechar a ligação. Definir este timeout para um valor diferente de zero garante que as aplicações possam continuar responsivas caso haja falhas de rede ou de comunicação com o servidor. O valor padrão é 0, o que significa um tempo limite infinito. Certifique-se de quesocketTimeoutseja maior quequeryTimeoutpara evitar exceções de timeout no socket durante a janela de tempoqueryTimeout. Da mesma forma, garantir quesocketTimeouté maior do quecancelQueryTimeoutpara evitar exceções de timeout do soquete durante a janelacancelQueryTimeout.
Valores razoáveis de timeout para a sua aplicação dependem das prioridades da sua aplicação. Definir valores mais baixos para timeouts prioriza a resposta da aplicação em detrimento da consistência dos dados. Quando os limites de tempo são atingidos, as aplicações precisam de decidir a melhor ação a tomar. Essa decisão baseia-se na ação da base de dados que está a ser realizada. Por exemplo, para uma SELECT instrução, a decisão pode ser reportar um erro ao utilizador, ou pode ser reconectar e tentar novamente. Para INSERT ou UPDATE declarações, essa decisão pode ser diferente.
Para uma aplicação responsiva, loginTimeout e queryTimeout devem ser definidos para valores relativamente baixos. De forma semelhante, cancelQueryTimeout deve também ser definido para um valor baixo para garantir que o driver não espere demasiado tempo para o servidor reconhecer o cancelamento da consulta, quando o queryTimeout é ultrapassado. Por fim, socketTimeout deve ser definido para evitar que o driver espere demasiado tempo em qualquer cenário em que a ligação ao servidor seja interrompida (interrupção de rede, crash do servidor, etc.).
Resumo da propriedade
| Propriedade | Description | Predefinido | Resultado da ligação |
|---|---|---|---|
loginTimeout |
O número de segundos que o controlador deve esperar antes de interromper uma conexão com falha. | 30 segundos [11,2+], caso contrário, 15 segundos |
Ligação fechada |
queryTimeout |
O número de segundos a esperar antes de cancelar uma consulta. | -1 [Tempo final infinito] | Ligação aberta |
cancelQueryTimeout |
O número de segundos para aguardar um reconhecimento do cancelamento do QueryTimeout. | -1 [Tempo final infinito] | Ligação fechada |
lockTimeout |
O número de milissegundos a esperar antes da base de dados retornar um erro de tempo limite de bloqueio. | -1 [Tempo final infinito] | Ligação aberta |
socketTimeout |
O número de milissegundos de espera numa leitura ou escrita do soquete. | Zero [Tempo limite infinito] | Ligação fechada |