Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
-
loginTimeoutto liczba sekund, na jaką sterownik czeka, aby nawiązać połączenie z serwerem. Jeśli ten czas minie, sterownik zwraca błąd i nie otwiera połączenia. Wartość zero ustawia timeout na domyślny systemowy timeout, który wynosi 30 sekund w wersjach sterowników JDBC 11.2 i nowszych. W sterownikach JDBC 10.2 i wcześniejszych domyślny limit czasu wynosi 15 sekund. Każda niezerowa wartość określa liczbę sekund, na jaką sterownik czeka, zanim zakończy czas awarii połączenia. Jeśli konsekwentnie masz problem z nawiązaniem połączenia ze sterownikiem JDBC, możesz potrzebować wydłużyć ten czas do 90 lub nawet 120 sekund.loginTimeoutogranicza także liczbę powtórek połączenia sterownika, a nie tylko pojedynczą próbę, co ma znaczenie przy łączeniu się z automatycznie pauzowaną bazą danych Azure SQL Database bez serwera. Więcej informacji można znaleźć w artykule Łączenie z automatycznie wstrzymywaną bezserwerową bazą danych.
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.
-
queryTimeoutto 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. -
cancelQueryTimeoutto 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śćcancelQueryTimeoutplusqueryTimeoutsekund, 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. -
lockTimeoutto 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. -
socketTimeoutdotyczy wszystkich komunikacji gniazd z serwerem. Jeśli serwer zatrzymuje komunikację ze sterownikiem, nie potwierdzając lub odpowiadając na dane, sterownik czeka na wartośćsocketTimeoutprzed 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ę, żesocketTimeoutjest większy niżqueryTimeout, aby uniknąć wyjątków przekroczenia limitu czasu gniazda w okniequeryTimeout. Podobnie upewnij się, żesocketTimeoutjest większe niżcancelQueryTimeoutw celu uniknięcia wyjątków limitu czasu gniazda podczas oknacancelQueryTimeout.
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 polegać na zgłoszeniu błędu użytkownikowi lub ponownym połączeniu i próbie ponownej. W przypadku instrukcji INSERT lub UPDATE ta decyzja 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 |