logo search
Шпора ПРИС для Тани

Механизм блокировок. Виды блокировок. Централизованное блокирование, блокирование первичных копий и распределенное блокирование. Блокировка

Блокировка гарантирует уникальность доступа транзакции к элементу данных и предотвращает использование данных одной транзакцией во время их использования другой. Другими словами, транзакция Т2 не получит доступа к данным, которые в настоящий момент используются в транзакции Т1.

Например, при копировании таблицы она блокируется от изменения, хотя и разрешено просматривать ее содержимое.

Блокировка может выполняться на уровне:

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

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

Данный уровень блокировки наиболее часто применяется в многопользовательских СУБД.

Управление такой блокировкой приводит к большим накладным расходам, т.к. блокировка требуется для каждой строки в каждой таблице БД.

Этот уровень блокировки предоставляет наиболее гибкий доступ к данным в многопользовательских средах, но применяется редко, т.к. требует неоправданно больших накладных расходов.

В СУБД могут применяться следующие типы блокировок:

Выделяют следующие виды блокировок:

  1. Полная блокировка. Означает полное завершение любых операций над основными объектами БД (таблицами, отчетами и формами). Этот вид блокировки обычно применяется при изменении структуры объектов.

  2. Блокировка от записи. Накладывается в случаях, когда можно читать данные, но не изменять их. Изменение структуры также запрещается.

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

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

В отношении перечисленных выше блокировок действуют следующие правила совмещения:

В алгоритмах, основанных на блокировках, применяется один из трех методов: централизованное блокирование, блокирование первичных копий и распределенное блокирование.

Централизованное блокирование

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

Проблемы централизованного блокирования:

Блокирование первичных копий

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

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

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

Распределенное блокирование

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

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

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

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

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