Общие сведения о свойствах времени ожидания в драйвере JDBC
Параметры времени ожидания в драйвере JDBC можно использовать для определения приоритета реагирования приложений. По умолчанию большая часть времени ожидания драйвера определяет приоритет ожидания результата, чтобы обеспечить согласованность данных. Убедитесь, что вы выбираете время ожидания, соответствующие потребностям приложения.
Для начального подключения loginTimeout
используется:
loginTimeout
— это время в секундах, когда драйвер ожидает установления подключения к серверу. Если этот объем превышен, возвращается ошибка, и открытое подключение не установлено. Нулевое значение указывает, что время ожидания по умолчанию — это время ожидания системы по умолчанию, которое составляет 30 секунд в версиях 11.2 и выше. Для версий 10.2 и ниже время ожидания по умолчанию составляет 15 секунд. Любое ненулевое значение — это количество секунд, которое драйвер должен ожидать до истечения времени ожидания сбоя подключения. Если у вас постоянно возникают проблемы с установкой подключения к драйверу JDBC, может потребоваться увеличить это время ожидания до 90 или даже 120 секунд.
После установки queryTimeout
cancelQueryTimeout
подключения , и lockTimeout
используются во время выполнения инструкций. socketTimeout
используется для любого взаимодействия драйвера с сервером.
queryTimeout
— это время, в секундах, драйвер будет ждать после отправки команды выполнения на сервер, чтобы получить ответ от сервера с данными. Если это время превышено, команда отменяется. Превышение этого времени ожидания не закрывает подключение. Значение по умолчанию — 1, что означает бесконечное время ожидания.cancelQueryTimeout
— это время, в секундах, драйвер ожидает подтвержденияqueryTimeout
отмены с сервера, прежде чем принудительно завершать или закрывать соединение. То есть драйвер ожидает общего количестваcancelQueryTimeout
плюсqueryTimeout
секунд, прежде чем соединение будет закрыто. Установка этого времени ожидания для ненулевого значения гарантирует, что приложения могут оставаться адаптивными, если сбой сети или связи с сервером, когда запрос истек. Значение по умолчанию для этого свойства — -1, которое является бесконечным временем ожидания.lockTimeout
— это время ожидания освобождения блокировки в случаях, когда выполняется инструкция блокировки. Превышение этого времени ожидания не приводит к закрытию подключения. Значение по умолчанию для этого свойства — -1, которое является бесконечным временем ожидания.socketTimeout
применяется ко всем связям сокета с сервером. Если сервер перестает работать с драйвером, либо не признавая или отвечая на данные, драйвер ожидает значенияsocketTimeout
, прежде чем он закрывает подключение. Установка этого времени ожидания ненулевого значения гарантирует, что приложения могут оставаться адаптивными, если с сервером произошел сбой сети или связи. Значение по умолчанию равно 0, что означает бесконечное время ожидания. Убедитесь, что этоsocketTimeout
больше, чемqueryTimeout
избежать исключений времени ожидания сокета во времяqueryTimeout
окна. Аналогичным образом убедитесь, что этоsocketTimeout
больше, чемcancelQueryTimeout
избежать исключенийcancelQueryTimeout
времени ожидания сокета во время окна.
Разумные значения времени ожидания для приложения зависят от приоритетов приложения. Установка более низких значений времени ожидания определяет скорость реагирования приложения на согласованность данных. Когда достигается время ожидания, приложениям необходимо решить лучший курс действий. Это решение основано на выполняемом действии базы данных. Например, для SELECT
инструкции решение может сообщить об ошибке пользователю или повторно подключиться и повторить попытку. Для INSERT
или UPDATE
инструкций это решение может отличаться.
Для адаптивного приложения loginTimeout
следует queryTimeout
задать относительно низкие значения. Аналогичным образом следует также задать низкое значение, cancelQueryTimeout
чтобы драйвер не ждал слишком долго, чтобы сервер признал отмену запроса при queryTimeout
превышении. Наконец, socketTimeout
следует настроить защиту от драйвера, ожидая слишком долго во время любого сценария, когда подключение к серверу нарушено (прерывание сети, сбой сервера и т. д.).
Сводка свойств
Свойство | Description | По умолч. | Результат подключения |
---|---|---|---|
loginTimeout |
Время в секундах, по истечении которого драйвер инициирует превышение времени ожидания неудачного подключения. | 30 секунд [11.2+], в противном случае 15 секунд |
Закрытое подключение |
queryTimeout |
Количество секунд, ожидающих отмены запроса. | -1 [бесконечное время ожидания] | Открытие подключения |
cancelQueryTimeout |
Количество секунд, ожидающего подтверждения отмены QueryTimeout. | -1 [бесконечное время ожидания] | Закрытое подключение |
lockTimeout |
Число миллисекунда, ожидающее, прежде чем база данных возвращает ошибку времени ожидания блокировки. | -1 [бесконечное время ожидания] | Открытие подключения |
socketTimeout |
Количество миллисекунда, ожидающее чтения или записи сокета. | Ноль [бесконечное время ожидания] | Закрытое подключение |