Udostępnij przez


Opis właściwości limitu czasu w sterowniku JDBC

pobierz sterownik JDBC

Ustawienia limitu czasu w sterowniku JDBC mogą służyć do określania priorytetów czasu odpowiedzi aplikacji. Większość limitów czasu sterownika, domyślnie, określa priorytet oczekiwania na wynik w celu zapewnienia spójności danych. Upewnij się, że wybierasz limity czasu odpowiednie dla potrzeb aplikacji.

W przypadku początkowego połączenia loginTimeout jest używane:

  • loginTimeout to czas oczekiwania sterownika w sekundach na nawiązanie połączenia z serwerem. Jeśli ta kwota zostanie przekroczona, zostanie zwrócony błąd i nie zostanie nawiązane otwarte połączenie. Wartość zero wskazuje, że limit czasu jest domyślnym limitem czasu systemu, który wynosi 30 sekund w wersjach 11.2 i nowszych. W przypadku wersji 10.2 i poniżej domyślny limit czasu wynosi 15 sekund. Każda wartość niezerowa oznacza liczbę sekund, przez które sterownik powinien czekać, zanim nastąpi przekroczenie czasu połączenia zakończonego niepowodzeniem. Jeśli stale występują problemy z nawiązaniem połączenia ze sterownikiem JDBC, może być konieczne zwiększenie tego limitu czasu do 90, a nawet 120 sekund.

Po nawiązaniu połączenia queryTimeout, cancelQueryTimeout i lockTimeout są używane podczas wykonywania instrukcji. socketTimeout służy do komunikacji sterowników z serwerem.

  • queryTimeout to czas, w sekundach, przez który sterownik będzie czekał po wysłaniu polecenia „execute” do serwera, na otrzymanie odpowiedzi z serwera zawierającej dane. Jeśli ten czas zostanie przekroczony, polecenie zostanie anulowane. Przekroczenie tego limitu czasu nie powoduje zamknięcia połączenia. Wartość domyślna to -1, co oznacza nieskończony limit czasu.
  • cancelQueryTimeout to czas, w sekundach, sterownik czeka na potwierdzenie anulowania przez serwer, przed wymuszonym zakończeniem/zamknięciem połączenia. Oznacza to, że sterownik czeka łączną ilość cancelQueryTimeout plus queryTimeout sekund, zanim połączenie zostanie zamknięte. Ustawienie tego limitu czasu na wartość niezerową zapewnia, że aplikacje mogą zachować czas odpowiedzi, jeśli wystąpi awaria sieci lub komunikacji z serwerem, gdy upłynął limit czasu zapytania. Wartość domyślna dla tej właściwości to -1, czyli nieskończony czas oczekiwania.
  • lockTimeout to czas oczekiwania na zwolnienie blokady, w przypadkach, gdy istnieje wykonywanie instrukcji blokowania blokady. Przekroczenie tego limitu czasu nie powoduje zamknięcia połączenia. Wartość domyślna dla tej właściwości to -1, czyli nieskończony czas oczekiwania.
  • socketTimeout dotyczy wszystkich komunikacji gniazd z serwerem. Jeśli serwer zatrzymuje komunikację ze sterownikiem, nie potwierdzając lub odpowiadając na dane, sterownik czeka na wartość socketTimeout przed zamknięciem połączenia. Ustawienie tego limitu czasu na wartość niezerową gwarantuje, że aplikacje będą reagować, jeśli wystąpi awaria sieci lub komunikacji z serwerem. Wartość domyślna to 0, co oznacza nieskończony limit czasu. Upewnij się, że socketTimeout jest większy niż queryTimeout, aby uniknąć wyjątków przekroczenia limitu czasu gniazda w oknie queryTimeout. Podobnie upewnij się, że socketTimeout jest większe niż cancelQueryTimeout w celu uniknięcia wyjątków limitu czasu gniazda podczas okna cancelQueryTimeout.

Rozsądne wartości limitu czasu aplikacji zależą od priorytetów aplikacji. Ustawienie niższych wartości limitów czasu określa priorytet reakcji aplikacji na spójność danych. Po osiągnięciu limitu czasu aplikacje muszą zdecydować o najlepszym kursie działania. Ta decyzja jest oparta na wykonywanej akcji bazy danych. Na przykład w przypadku SELECT instrukcji decyzja może dotyczyć zgłaszania błędu użytkownikowi lub ponownego nawiązywania połączenia i ponawiania próby. W przypadku INSERT lub UPDATE wyrażeń decyzja ta może być inna.

Dla aplikacji responsywnej, loginTimeout i queryTimeout powinny być ustawione na stosunkowo niskie wartości. Podobnie, cancelQueryTimeout należy ustawić na niską wartość, aby upewnić się, że sterownik nie czeka zbyt długo, aż serwer zatwierdzi anulowanie zapytania, gdy queryTimeout zostanie przekroczony. Na koniec należy ustawić zabezpieczenie, aby sterownik nie czekał zbyt długo w sytuacjach, gdy socketTimeout łączność z serwerem jest przerwana (przerwa w sieci, awaria serwera i tym podobne).

Podsumowanie właściwości

Majątek Description Default Wynik połączenia
loginTimeout Liczba sekund, przez które sterownik powinien czekać przed upływem limitu czasu nieudanego połączenia. 30 sekund [11.2+],
w przeciwnym razie 15 sekund
Zamknięte połączenie
queryTimeout Liczba sekund oczekiwania przed anulowaniem zapytania. -1 [Nieskończone limit czasu] Otwieranie połączenia
cancelQueryTimeout Liczba sekund oczekiwania na potwierdzenie anulowania zapytaniaTimeout. -1 [Nieskończone limit czasu] Zamknięte połączenie
lockTimeout Liczba milisekund oczekiwania przed tym, jak baza danych zwróci błąd upłynięcia czasu blokady. -1 [Nieskończone limit czasu] Otwieranie połączenia
socketTimeout Liczba milisekund, przez którą należy czekać na odczyt lub zapis na gnieździe. Zero [Nieskończony limit czasu] Zamknięte połączenie

Zobacz także

Ustawianie właściwości połączenia