Методы блокировки

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

§ Изменение данных может быть осуществлено без учета модификации, сделанной другим процессором.

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

§ Одно действие может частично воздействовать на результат другого действия. Например, при получении отчета об успеваемости не исключено, что другим пользователем произведено удаление из списка одного или нескольких студентов, а данные об их успеваемости уже могут войти в вывод первого запроса;

§ Тупиковая ситуация, которая может произойти, если процессы попытаться выполнить конфликтующее друг с другом действия. Это может возникнуть, например, если один пользователь пробует изменить значение внешнего ключа, а другой – родительского ключа, и это происходит одновременно.

Для избежания конфликта между одновременно выполняемыми действиями несколькими пользователями БД существует метод блокировки. Блокировки задерживают определенные операции в БД, пока другие операции или транзакции не завершены. Задержанные операции помещаются в очередь и выполняются только тогда, когда блокировка снята, а иногда отклоняются системой, выдавая при этом предупреждение.

Различают два базовых типа блокировок:

§ Распределяемые (нежесткие) блокировки – могут быть установлены более чем одним пользователем в данный момент времени, что дает возможность любому числу процессоров обращаться к данным, но не изменять их;

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

Уровень изоляции блокировки определяет, сколько таблиц будет блокировано.

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

Указатель стабильности – это уровень изоляции, который предохраняет каждую запись от изменений на время, когда она считывается, или от чтения на время ее изменения

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: