Мое приложение работает на EJB 1.1 на Jboss 2.4 и использует Sybase. В последнее время мы сталкиваемся с проблемой, когда на конкретной таблице есть неопределенные блокировки, и это привело к тому, что последующие запросы ожидают блокировки, чтобы их освободили, и поэтому полное приложение не работает. Администратор БД утверждает, что приложение не выпускает никаких блокировок, и мы не внесли никаких изменений в код, относящийся к этой конкретной таблице. Мой вопрос в том, есть ли какие-либо общие проблемы с Jboss 2.4, которые необходимо проверить или какие-то конкретные области, которые нужно искать?Замки, не выпущенные в Sybase ASE
Выполняемый мной запрос - это просто простые операторы select/update с изоляцией транзакций read_committed. Я получаю соединение из пула jboss и выполняю выбор или обновление, а затем закрываю соединение, оператор и набор результатов.
Почему проблема возникает случайно?
Прошу прощения, я не могу предоставить какой-либо код.
Чтобы добавить к ответу ниже, блокировки также могут быть настроены на основе таблицы, если вы не хотите изменять сервер в целом. При использовании datarows есть дополнительные накладные расходы, поэтому, если у вас есть только проблемы с таблицами с парами, вам может потребоваться изменить только эти таблицы. http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20021_1251/html/locking/X12029.htm –
Я бы предложил запросить администратор базы данных для всей информации о блокирующем соединении.Предполагая, что эта СУБД является Sybase ASE, а не ASA или другой, блокировки могут запрашиваться в syslocks, где может быть получен идентификатор соединения (spid) процесса блокировки. Из spid информация доступна в sysprocesses: время начала, пользователь и информация, зависящая от приложения. Собирая все, возможно, это позволяет идентифицировать транзакцию jboss и делать выводы. – Corral