Состояние взаимоблокировки в компьютерных системах возникает, когда несколько процессов пытаются обратиться к одним и тем же данным и в итоге блокируют друг другу доступ к ним. 2
Некоторые причины возникновения взаимоблокировки:
- Борьба за ресурсы. 4 Взаимоблокировка может произойти, когда несколько процессов борются за один ресурс, особенно невыгружаемый (например, принтер). 4
- Несоответствующий уровень блокировки ресурса. 5 Если уровень недостаточен, синхронные транзакции пытаются изменить скачанные сведения. 5 Когда одна из транзакций налагает блокировку на ресурс другой транзакции, все остальные перестают действовать. 5
- Распараллеливание процессов. 5 СУБД может распределить выполнение любого действия на разные процессоры системы. 5 Если процессы, происходящие на разных процессорах, блокируют ресурсы, то происходит взаимоблокировка. 5
- Построение плана запроса с избыточными блокировками. 5 Когда в систему вводится сложный запрос, СУБД может внести погрешность в план запроса, который заблокирует «лишние» ресурсы, в результате чего возникнет взаимоблокировка. 5
- Неоптимальные запросы. 5 Для возникновения взаимоблокировки достаточно некорректного запроса. 5
Взаимоблокировка — нежелательное состояние системы, которое может привести к остановке операций. 3 Чтобы избежать её, в компьютерных системах используют стратегии, например, алгоритм распределения ресурсов и предотвращения взаимоблокировки. 3