sybase и jdbc. Не удалось выполнить транзакцию jdbc. Время ожидания

109
15

После того, как мое приложение совершает много транзакций через несколько минут, я получаю следующее исключение:

не удалось выполнить транзакцию jdbc. Вложенное исключение - java.sql.sqlexception: jz006: catch ioexception: java.net.SocketTimeoutException: время ожидания... "

Я использую Sybase с драйвером JDBC 4 с Spring JDBC, и я нашел эту ссылку: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc39001.0707/html/prjdbc0707/prjdbc070714.htm Могу ли я использовать одно из следующих:

SESSION_TIMEOUT
DEFAULT_QUERY_ TIMEOUT
INTERNAL_QUERY_TIMEOUT

Одна из идей - сделать транзакции в пакетном режиме, но у меня нет времени на это. Какие существуют варианты, чтобы избежать получения этой ошибки?

спросил(а) 2021-01-25T18:54:08+03:00 4 месяца, 3 недели назад
1
Решение
76

Проверьте, блокируются ли ваши процессы при выполнении (или обратитесь к администратору баз данных, если вы не знаете, как проверить). В зависимости от свойств соединения (в частности, для автоматического набора из-за отключения) вы фактически не можете совершать транзакции полностью до того, как будет предпринята следующая попытка, и они могут блокировать друг друга, если вы используете пул соединений с несколькими потоками. Поговорите с вашим администратором базы данных и проверьте схему блокировки таблицы, например, если она настроена на блокировку всех страниц, вы сохраните блокировки на странице, а не на уровне строк данных. Вы также можете проверить это самостоятельно через sp_help. Более подробную информацию о различных типах схем блокировки можно найти по адресу http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20021_1251/html/locking/X25549.htm (старая версия, но все еще актуально в текущих версиях).

Вы можете напрямую проверить блокировки через sp_who, sp_lock или против системных таблиц (выберите spid, заблокирован от master..sysprocesses, где заблокирован! = 0, очень простой, чтобы получить процесс и процесс блокировки, вы можете добавить к нему больше столбцов требуется).

Вы также должны попросить своего администратора баз данных проверить, что транзакции оптимальны, так как, например, таблицы могут обновлять всю таблицу для других транзакций и приведут к проблемам с таймаутом, которые вы видите здесь.

ответил(а) 2021-01-25T18:54:08+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема