Скачиваний:
25
Добавлен:
11.04.2015
Размер:
41.98 Кб
Скачать

9. Применение блокировок для обеспечения одновременного доступа к данным. Виды блокировок.

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

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

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

  • определение адреса строки, которую необходимо заблокировать;

  • блокирование очереди ранее заблокированных строк, организованной в виде писковой структуры;

  • просмотр списка с целью проверки факта блокирования анализируемой строки;

  • создание в списке записи, фиксирующей факт блокирования строки;

  • снятие блокировки с очереди.

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

случай 1 - превышен максимальный порог эскалации, т.е. превышено значение максимально возможного числа заблокированных строк;

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

Для задания размера служебной структуры блока, используемой для хране­ния информации о транзакциях, применяются следующие параметры:

INITTRANS - указывает на первоначальный размер этой структуры. Стан­дартными значениями являются: 2 - для индексов и 1 - для таблиц;

MAXTRANS - задает максимальное количество транзакций. Стандартное значение равно 255.

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

Разделяемые блокировки устанавливаются при выполнении транзакцией операции чтения данных. Тогда, если на объект UI транзакцией RI наложена раз­деляемая блокировка, то разрешается другой транзакции R2 установить на этот объект аналогичную блокировку. Основное назначение разделяемых блокировок заключается в информировании других блокировок о выполнении операции чтения параметров объекта. Применение разделяемых блокировок позволяет предотвратить считывание незафиксированных или иначе черновых страниц.

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

Блокировки обновления предназначаются для предотвращения возник­новения тупика при выполнении двух транзакций, осуществляющих операции об­новления различных кортежей в одной таблице.

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

Различают следующие типы преднамеренных блокировок:

  • преднамеренные разделяемые блокировки - устанавливаются для объектов уровня таблиц и страниц;

  • преднамеренные эксклюзивные блокировки - устанавливаются для строк таблиц;

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

Блокировки схемы делятся на два типа:

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

  • блокировки устойчивости схемы запрещают выполнение one модификации структуры таблицы в том случае, если другие транзакции начали ранее реализацию операций доступа к строкам этой таблицы. Таким образом, запрещается установление блокировки схемы при наличии других активных блокировок.

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

Соседние файлы в папке ответы