Время ожидания тупика DB2 Sqlstate: 40001, код причины 68 ​​из-за операторов обновления, вызываемых из сервлета с использованием SQL - PullRequest
11 голосов
/ 31 октября 2011

Я вызываю операторы обновления один за другим из сервлета в DB2. Я получаю сообщение об ошибке sqlstate 40001, код причины 68, который, как я обнаружил, связан с тайм-аутом тупика.

  • Как я могу решить эту проблему?
  • Можно ли решить, установив тайм-аут запроса?
  • Если да, то как его использовать с операторами обновления в сервлете или где его использовать?

1 Ответ

12 голосов
/ 31 октября 2011

Код причины 68 ​​уже говорит вам, что это связано с тайм-аутом блокировки (взаимоблокировка - это код причины 2). Это может быть связано с тем, что другие пользователи одновременно выполняют запросы, которые используют те же данные, к которым вы обращаетесь, или ваши собственные множественныеupdates.

Начните с запуска db2pd -db locktest -locks show detail из командной строки db2, чтобы увидеть, где находятся блокировки.Затем вам нужно будет выполнить что-то вроде:

select tabschema, tabname, tableid, tbspaceid 
from syscat.tables where tbspaceid = # and tableid = #

, заполнив символы # идентификатором, который вы получите из вывода команды db2pd.

Как только вы увидите, где блокировкиВот несколько советов:

frequency Частота блокировки иногда может быть уменьшена путем обеспечения того, чтобы все приложения обращались к своим общим данным в том же порядке - это означает, например, что они получают доступ (и, следовательно, блокируют) строки в таблицеА, затем таблица В, затем таблица С и т. Д.

взято из: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.trb.doc/doc/t0055074.html

рекомендуемое прочтение: http://www.ibm.com/developerworks/data/library/techarticle/dm-0511bond/index.html

Добавление: если ваш сервлет или другое виновное приложение использует select операторов, которые были обнаружены вв тупик, вы можете попробовать добавить with ur в операторы выбора, если точность вновь обновленных (или вставленных) данных не важна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...