Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Параметры времени ожидания в драйвере JDBC можно использовать для определения приоритета реагирования приложений. По умолчанию большинство тайм-аутов драйвера отдают приоритет ожиданию результата, чтобы обеспечить согласованность данных. Убедитесь, что вы выбираете время ожидания, соответствующие потребностям приложения.
Для начального подключения loginTimeout используется:
-
loginTimeout— это количество секунд, которые драйвер ждёт для установления соединения с сервером. Если это время проходит, драйвер возвращает ошибку и не открывает соединение. Значение нуля устанавливает тайм-аут на стандартный системный тайм-аут, который составляет 30 секунд в версиях драйвера JDBC 11.2 и более поздних. В драйверах JDBC 10.2 и более ранних версиях тайм-аут по умолчанию составляет 15 секунд. Любое ненулевое значение задаёт число секунд, в течение которых драйвер ожидает, прежде чем зафиксировать тайм-аут при неудачном подключении. Если у вас постоянно возникают трудности с установкой соединения с драйвером JDBC, возможно, придётся увеличить этот тайм-аут до 90 или даже 120 секунд.loginTimeoutтакже ограничивает количество повторных попыток подключения драйвера, а не только одну попытку подключения, что важно при подключении к автоматически приостанавливаемой базе данных База данных SQL Azure serverless. Дополнительные сведения см. в разделе «Подключение к автоматически приостанавливаемой бессерверной базе данных».
После установки queryTimeoutcancelQueryTimeoutподключения , и 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 следует установить так, чтобы драйвер не ждал слишком долго в любых ситуациях, когда соединение с сервером прерывается (сбой сети, отказ сервера и т. д.).
Сводка свойств
| Свойство | Описание | По умолчанию | Результат подключения |
|---|---|---|---|
loginTimeout |
Количество секунд, в течение которых драйвер должен ожидать перед тем, как прервать неудачное подключение по тайм-ауту. | 30 секунд [11.2+], в противном случае 15 секунд |
Закрытое подключение |
queryTimeout |
Количество секунд ожидания перед отменой запроса. | -1 [бесконечное время ожидания] | Открытие подключения |
cancelQueryTimeout |
Количество секунд ожидания подтверждения отмены QueryTimeout. | -1 [бесконечное время ожидания] | Закрытое подключение |
lockTimeout |
Количество миллисекунд, в течение которых выполняется ожидание, прежде чем база данных выдаст ошибку тайм-аута блокировки. | -1 [бесконечное время ожидания] | Открытие подключения |
socketTimeout |
Количество миллисекунд ожидания при чтении из сокета или записи в сокет. | Ноль [бесконечное время ожидания] | Закрытое подключение |