Ответы Черноморова экзамен / ответы / 9
.doc9. Применение блокировок для обеспечения одновременного доступа к данным. Виды блокировок.
Блокировка - механизм, используемый для управления одновременным доступом различных транзакций к одному ресурсу и обеспечивающий поддержку целостности данных. Блокировка заключается в предоставлении транзакции возможности выполнения операций манипулирования свойствами ресурса при ограничении доступа к этому ресурсу для других транзакций.
Идея простой блокировки состоит в том, что при выполнении любой операции обращения к ресурсу он поступает в монопольное распоряжение транзакции. В качестве таких операций рассматриваются следующие: чтение, запись, модификация и удаление.
В промышленных СУБД применяются различные способы реализации блокировок. Классический вариант предполагает включение в состав СУБД менеджера блокировок, который для организации блокировок, в частности, на уровне строки выполняет следующую последовательность действий:
-
определение адреса строки, которую необходимо заблокировать;
-
блокирование очереди ранее заблокированных строк, организованной в виде писковой структуры;
-
просмотр списка с целью проверки факта блокирования анализируемой строки;
-
создание в списке записи, фиксирующей факт блокирования строки;
-
снятие блокировки с очереди.
Предположим, что в качестве текущего уровня установлен уровень блокирования строки. Тогда переход к блокированию следующего по иерархии объекта, а именно к блокированию страницы, может произойти в двух случаях:
случай 1 - превышен максимальный порог эскалации, т.е. превышено значение максимально возможного числа заблокированных строк;
случай 2 - одновременно превышены два предельных значения - максимальный процент заблокированных строк и минимальное число заблокированных строк. Использование только одного параметра - процента заблокированных строк - является некорректным для таблиц небольшого размера, так как для них это превышение может быть достигнуто для малого числа заблокированных строк.
Для задания размера служебной структуры блока, используемой для хранения информации о транзакциях, применяются следующие параметры:
INITTRANS - указывает на первоначальный размер этой структуры. Стандартными значениями являются: 2 - для индексов и 1 - для таблиц;
MAXTRANS - задает максимальное количество транзакций. Стандартное значение равно 255.
К основным режимам блокирования относятся такие, как разделяемые блокировки, эксклюзивные блокировки, блокировки обновления, преднамеренные блокировки, блокировки схемы, блокировки массового обновления. Необходимо отметить, что выбор режима определяется типом выполняемой операции.
Разделяемые блокировки устанавливаются при выполнении транзакцией операции чтения данных. Тогда, если на объект UI транзакцией RI наложена разделяемая блокировка, то разрешается другой транзакции R2 установить на этот объект аналогичную блокировку. Основное назначение разделяемых блокировок заключается в информировании других блокировок о выполнении операции чтения параметров объекта. Применение разделяемых блокировок позволяет предотвратить считывание незафиксированных или иначе черновых страниц.
Эксклюзивные блокировки предполагают передачу в монопольное распоряжение транзакции объекта, на который установлена такая блокировка. Эти блокировки накладываются при выполнении операций обновления и удаления данных. Такая блокировка несовместима с другими типами блокировок, т.е. эксклюзивная блокировка не может быть установлена на объект, если на него была наложена ранее любая другая блокировка, и, наоборот, если на объект была установлена эксклюзивная блокировка, то на него не может быть наложена никакая другая блокировка.
Блокировки обновления предназначаются для предотвращения возникновения тупика при выполнении двух транзакций, осуществляющих операции обновления различных кортежей в одной таблице.
Преднамеренная блокировка - блокировка, которая при выполнении операций с объектами низкого уровня ограничивает для других транзакций доступ тем объектам более высокого уровня, в которые входят блокированные объекты низкого уровня.
Различают следующие типы преднамеренных блокировок:
-
преднамеренные разделяемые блокировки - устанавливаются для объектов уровня таблиц и страниц;
-
преднамеренные эксклюзивные блокировки - устанавливаются для строк таблиц;
-
разделяемые блокировки, переходящие в преднамеренные эксклюзивные блокировки - это разделяемые блокировки, которые установлены для объектов нижнего уровня с целью дальнейшей модификации данных и которые на он ленном этапе обработки будут преобразованы в эксклюзивные.
Блокировки схемы делятся на два типа:
-
блокировки модификации схемы устанавливаются при изменении структуры базы данных либо отдельных таблиц. Эти блокировки несовместимы ни с какими другими блокировками, или иначе в процессе модификации структуры объектов базы данных запрещается выполнение любых других операций;
-
блокировки устойчивости схемы запрещают выполнение one модификации структуры таблицы в том случае, если другие транзакции начали ранее реализацию операций доступа к строкам этой таблицы. Таким образом, запрещается установление блокировки схемы при наличии других активных блокировок.
Блокировки массового обновления представляют разновидность, табличных блокировок, которые позволяют выполнять параллельную обработку строк в заблокированной таблице.