Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Непонятный deadlock / 2 сообщений из 2, страница 1 из 1
04.02.2020, 09:48
    #39922149
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный deadlock
Смотрю системный лог. Для каждой из транзакций, участвующих в deadlock указана причина
Код: plaintext
while locking tuple (529,6) in relation ...
То есть две транзакции спорят за один ресурс (запись таблицы). Какое отношение это вообще имеет к deadlock?
В коде используется
Код: plsql
1.
Select ... for update

. Подозреваю, что эту общую запись вообще может удерживать третья транзакция. Но всё-равно никаких причин для deadlock не вижу. Версия Posrtgresql 10.10. Кто-нибудь может объяснить ситуацию?
Может ли это быть связано с тем, что
Код: plsql
1.
Select ... for update

выполняется в триггерной функции? В коде есть несколько
Код: plsql
1.
Select ... for update

на разных таблицах, но проблемы только с одной.
C Postgresql работаю пол года, но есть 16 лет опыта работы с Oracle и с deadlock в Oracle сталкивался не раз. В Oracle ситуация deadlock соответствует классическому описанию: транзакция 1 владеет ресурсом А и ожидает ресурс Б, транзакция 2 владеет ресурсом Б и ожидает ресурс А.
...
Рейтинг: 0 / 0
04.02.2020, 16:35
    #39922382
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный deadlock
Kr_Yury
Смотрю системный лог. Для каждой из транзакций, участвующих в deadlock указана причина
Код: plaintext
while locking tuple (529,6) in relation ...
То есть две транзакции спорят за один ресурс (запись таблицы). Какое отношение это вообще имеет к deadlock?
В коде используется
Код: plsql
1.
Select ... for update

. Подозреваю, что эту общую запись вообще может удерживать третья транзакция. Но всё-равно никаких причин для deadlock не вижу. Версия Posrtgresql 10.10. Кто-нибудь может объяснить ситуацию?
Может ли это быть связано с тем, что
Код: plsql
1.
Select ... for update

выполняется в триггерной функции? В коде есть несколько
Код: plsql
1.
Select ... for update

на разных таблицах, но проблемы только с одной.
C Postgresql работаю пол года, но есть 16 лет опыта работы с Oracle и с deadlock в Oracle сталкивался не раз. В Oracle ситуация deadlock соответствует классическому описанию: транзакция 1 владеет ресурсом А и ожидает ресурс Б, транзакция 2 владеет ресурсом Б и ожидает ресурс А.


В postgresql deadlocks ровно такие же как и во всем мире...
а более конкретно по тем обрывкам лога что вы прислали - не понять.
Полезно если такое воспроизводимо вылезает - включить полный лог запросов и посмотреть что каждая из 2х транзакций делала и в какой последовательности.... обычно все сразу становится очевидно.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Непонятный deadlock / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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