LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

а можно своими словами? я ж вас не посылаю читать документации

У РСУБД сложные блокировки, в данном случае разделяемая блокировка на чтение и эксклюзивная блокировка на удаление. Один клиент берет разделяемую блокировку на чтение, второй берет эксклюзивную на удаление, которую не может получить, и напоследок первый клиент берет блокировку на удаление, которую не может получить, поскольку второй клиент уже застолбил за собой право на эксклюзивную блокировку. Здесь играет роль механизм приоритетов, то есть, новая операция не может вырубить старую — иначе длинные операции могут никогда не закончиться.

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

Исходная версия byko3y, :

а можно своими словами? я ж вас не посылаю читать документации

У РСУБД сложные блокировки, в данном случае разделяемая блокировка на чтение и эксклюзивная блокировка на удаление. Один клиент берет разделяемую блокировку на чтение, второй берет эксклюзивную на удаление, которую не может получить, и напоследок первый клиент берет блокировку на удаление, которую не может получить, поскольку второй клиент уже застолбил за собой право на эксклюзивную блокировку. Здесь играет роль механизм приоритетов, то есть, новая операция не может вырубить старую — иначе длинные операции могут никогда не закончиться.