Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Инструментарий по вылавливанию deadlock / 4 сообщений из 4, страница 1 из 1
16.05.2016, 14:43
    #39236577
Fofanov_Alexey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментарий по вылавливанию deadlock
Есть ли нормальный инструмент по вылавливанию deadlock-ов?
"lock conflict on no wait transaction deadlock update..
At trigger..."

Чтобы указал, что вот данная транзакция с вот таким апдейтом держит строку и дает отлуп вот этому апдейту...

FireBird 2.5
...
Рейтинг: 0 / 0
16.05.2016, 14:51
    #39236592
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментарий по вылавливанию deadlock
Fofanov_Alexey,

разве что аудит (или трейс). Потому что дэдлок обычно долго не живет, как и транзакция, в которой он возник. Если deadlock случился "прям щас", то может быть, можно успеть увидеть что-то в mon$.

Но вообще-то, обычно сообщение deadlock - это конфликт обновления одной записи ИЗ ДВУХ транзакций. Так что, по уму надо знать, что делалось в обоих транзакциях, да еще и с какой записью.
...
Рейтинг: 0 / 0
16.05.2016, 16:11
    #39236714
Alexey Kovyazin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментарий по вылавливанию deadlock
Это не настоящий дедлок, это конфликт обновления одной и той же записи из двух разных транзакций.

Берете HQbird PerfMon, запускаете трейс, ждете момента, когда произошел облом, фиксируете (лучше всего в приложении).
Затем в БД лога PerfMon скрупулезно смотрите все открытые на тот момент транзакции, и в них смотрите выполняющиеся UPDATE или DELETE, далее сопоставляете с обломившимся и вуаля.

Сразу скажу, чтобы избавиться от такого поведения, нужно будет модифицировать логику приложения - перед апдейтом, который меняет реальные данные, делать холостой апдейт, и обрабатывать его результат - если не вернул ошибки, можно делать основной апдейт, если вернул, значит, надо сообщать пользователю о невозможности производства апдейта (тапки заняты), ну и далее либо сохранить измененные данные, либо просто выкинуть их.

С уважением,
Алексей Ковязин
www.ibase.ru
...
Рейтинг: 0 / 0
16.05.2016, 16:22
    #39236727
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментарий по вылавливанию deadlock
Alexey Kovyazinмодифицировать логику приложения - перед апдейтом, который меняет
реальные данные, делать холостой апдейт, и обрабатывать его результат - если не вернул
ошибки, можно делать основной апдейт, если вернул, значит, надо сообщать пользователю о
невозможности производства апдейта
А холостой-то апдейт тут зачем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Инструментарий по вылавливанию deadlock / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]