Базы данных. Вводный курс

Синхронизационные тупики, их распознавание и разрушение


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

На рис. 13.6 показан простой сценарий возникновения синхронизационного тупика между транзакциями T1

и T2:


Рис. 13.6. Ситуация синхронизационного тупика между транзакциями T1 и T2

  • транзакции T1

    и T2

    устанавливают монопольные блокировки объектов o1

    и o2

    соответственно;

  • после этого T1

    требуется совместная блокировка объекта o2, а T2

    – совместная блокировка объекта o1;

  • ни одно из этих требований блокировки не может быть удовлетворено, следовательно, ни одна из транзакций не может продолжаться; поэтому монопольные блокировки объектов никогда не будут сняты, а требования совместных блокировок не будут удовлетворены.

    Поскольку тупики возможны, и никакого естественного выхода из тупиковой ситуации не существует, то эти ситуации необходимо обнаруживать и искусственно устранять.



    Содержание раздела