Механизм блокировок. Виды блокировок. Централизованное блокирование, блокирование первичных копий и распределенное блокирование. Блокировка
Блокировка гарантирует уникальность доступа транзакции к элементу данных и предотвращает использование данных одной транзакцией во время их использования другой. Другими словами, транзакция Т2 не получит доступа к данным, которые в настоящий момент используются в транзакции Т1.
Например, при копировании таблицы она блокируется от изменения, хотя и разрешено просматривать ее содержимое.
Блокировка может выполняться на уровне:
-
Базы данных. На этом уровне блокируется вся база данных. Пока выполняется транзакция Т1, блокируется использование любых таблиц транзакцией Т2. Транзакции Т1 и Т2 не могут получать доступ к базе данных одновременно, даже если они используют разные таблицы. Блокировка снимается после завершения транзакции Т1.
Данный уровень используется для пакетных процедур, но плохо пригоден для работы многопользовательских СУБД, поскольку возникают проблемы с производительностью, когда множество транзакций ждут доступ к одной таблице.
-
Таблицы. На этом уровне блокируется отдельная таблица базы данных, предотвращая доступ транзакции Т2 к любой строке, пока транзакция Т1 использует данную таблицу. Транзакции Т1 и Т2 не могут получить доступ к одной и той же таблице, даже если они используют разные строки. Транзакция Т2 должна ждать, пока транзакция Т1 разблокирует таблицу.
Блокировка на уровне таблицы также мало пригодна для многопользовательских СУБД, поскольку многим транзакциям требуется доступ к разным частям одной и той же таблицы.
-
Страницы. При блокировке на уровне страницы СУБД будет блокировать дисковую страницу. Дисковая страница имеет фиксированный размер, например, 4 Кбайт, 8 Кбайт, 16 Кбайт и т.д. Таблица может охватывать несколько страниц. Транзакции Т1 и Т2 получают доступ к одной и той же таблице при блокировке разных дисковых страниц. Если транзакции Т2 потребуется использование строки, расположенной на странице, заблокированной транзакцией Т1, то Т2 придется ждать, пока Т1 ее разблокирует.
Данный уровень блокировки наиболее часто применяется в многопользовательских СУБД.
-
Строки. СУБД позволяет параллельным транзакциям получать доступ к различным строкам одной и той же таблицы, даже если строки размещены на одной дисковой странице. Транзакция Т2 будет ожидать завершения транзакции Т1 только в том случае, если они обращаются к одной и той же строке.
Управление такой блокировкой приводит к большим накладным расходам, т.к. блокировка требуется для каждой строки в каждой таблице БД.
-
Поля. Данный уровень блокировки позволяет параллельным транзакциям получать доступ к одной и той же строке, если они используют в этой строке разные поля.
Этот уровень блокировки предоставляет наиболее гибкий доступ к данным в многопользовательских средах, но применяется редко, т.к. требует неоправданно больших накладных расходов.
В СУБД могут применяться следующие типы блокировок:
-
Двоичная. Двоичная блокировка имеет только два состояния: 1 (заблокировано) и 0 (разблокировано). Если некоторый объект БД блокируется транзакцией, то ни одна другая транзакция не сможет получить доступ к этому объекту.
-
Разделяемая/исключающая. Исключающая блокировка устанавливается, когда транзакции необходимо обновить данные в БД и при этом на эти данные не установлена никакая другая блокировка. Исключающая блокировка должна использоваться, когда есть вероятность конфликта. Разделяемая блокировка применяется, когда одна транзакция считывает данные из БД и нет других транзакций, обновляющих те же данные.
Выделяют следующие виды блокировок:
-
Полная блокировка. Означает полное завершение любых операций над основными объектами БД (таблицами, отчетами и формами). Этот вид блокировки обычно применяется при изменении структуры объектов.
-
Блокировка от записи. Накладывается в случаях, когда можно читать данные, но не изменять их. Изменение структуры также запрещается.
-
Предохраняющая блокировка от записи. Предохраняет объект от наложения на него со стороны других операций полной блокировки либо блокировки от записи. Этот вид блокировки позволяет тому, кто раньше захватил объект, успешно завершить модификацию объекта. Примером необходимости использования этой блокировки является режим совместного редактирования таблицы несколькими пользователями.
-
Предохраняющая полная блокировка. Предохраняет объект от наложения на него со стороны других операций полной блокировки. Обеспечивает максимальный уровень совместного использования объектов. Такая блокировка может использоваться, например, для обеспечения одновременного просмотра несколькими пользователями одной таблицы. В группе пользователей, работающих с одной таблицей, эта блокировка не позволит никому изменить структуру общей таблицы.
В отношении перечисленных выше блокировок действуют следующие правила совмещения:
-
при наличии полной блокировки над объектом нельзя производить операции, приводящие хотя бы к одному из видов блокировок (полная блокировка несовместима ни с какой другой блокировкой);
-
блокировка от записи совместима с аналогичной блокировкой и предохраняющей полной блокировкой;
-
предохраняющая блокировка от записи совместима с обоими видами предохраняющей блокировок;
-
предохраняющая полная блокировка совместима со всеми блокировками, кроме полной.
В алгоритмах, основанных на блокировках, применяется один из трех методов: централизованное блокирование, блокирование первичных копий и распределенное блокирование.
Централизованное блокирование
При централизованном блокировании для всей распределенной базы данных поддерживается единая таблица блокировок. Эта таблица, располагаемая в одном из узлов, находится под управлением единого менеджера блокировок. Менеджер блокировок отвечает за установку и снятие блокировок от имени транзакций. Поскольку управление всеми блокировками сосредоточено на одном узле, то оно аналогично централизованному управлению одновременным доступом.
Проблемы централизованного блокирования:
-
центральный узел может стать узким местом: как из-за большого объема обработки данных, так и из-за генерируемого вокруг него интенсивного сетевого трафика;
-
надежность такой системы ограничена, поскольку отказ или недоступность центрального узла приводит к выходу из строя всей системы.
Блокирование первичных копий
Блокирование первичных копий – это алгоритм управления одновременным доступом, применяемый для баз данных с репликациями, где копии одних и тех же данных могут храниться в нескольких узлах.
Одна из таких копий определяется как первичная копия, и для доступа к любому элементу данных необходимо установить блокировку на его первичную копию. Множество первичных копий элементов данных известно всем узлам распределенной системы, и запросы транзакций на блокирование направляются в узлы, где хранятся первичные копии.
Если в распределенной базе данных репликации не используются, то данный алгоритм сводится к алгоритму распределенного блокирования.
Распределенное блокирование
Распределенное блокирование предполагает распределение обязанностей по управлению блокировками между всеми узлами системы. Для выполнения транзакции необходимо участие и взаимная координация менеджеров блокировок в нескольких узлах. Блокировки устанавливаются во всех узлах, данные которых участвуют в транзакции.
Алгоритмам распределенного блокирования не свойственны издержки механизма централизованного блокирования, связанные с перегруженностью центрального узла. Однако алгоритмы этого типа сложнее, а коммуникационные затраты, необходимые для установки всех требуемых блокировок, выше.
Общий побочный эффект всех алгоритмов управления одновременным доступом посредством блокирования – возможность тупиковых ситуаций.
Тупиком называется ситуация, при которой каждая из двух транзакций ожидает снятия блокировки данных другой транзакции.
Задача обнаружения и преодоления тупиков особенно сложна в распределенных системах. Тем не менее, благодаря относительной простоте и эффективности алгоритмов блокирования, они имеют значительно большую популярность, чем альтернативные алгоритмы, основанные на временных метках, а также алгоритмы оптимистического управления одновременным доступом.
- Понятие распределенной информационной системы. Распределенные базы данных. Принципы создания и функционирования распределенных баз данных.
- Прозрачные свойства распределенных баз данных. Прозрачность фрагментации, местоположения, локального отображения.
- Системы управления распределенными базами данных: понятие, функциональные возможности, типы. Преимущества и недостатки систем управления распределенными базами данных.
- Архитектура клиент-сервер. Основные правила архитектуры клиент-сервер. Модели распределений.
- Модели архитектуры клиент-сервер: rda-модель, dbs-модель, as-модель. Преимущества и недостатки.
- Фрагментация. Основные концепции фрагментации данных. Виды фрагментации.
- Репликация. Понятие согласованного распределенного набора данных. Варианты репликации. Протокол репликации rowa.
- Технологии доступа к данным: odbc, jdbc, ole db, ado, dao, bde.
- Транзакция, ее свойства. Модель транзакции в стандарте sql. Журнализация транзакций.
- Понятие распределенной транзакции. Мониторы обработки транзакций.
- Параллельное выполнение транзакций. Управление параллельным выполнением транзакций. Проблемы и решения по организации управления параллельным выполнением в распределенной среде.
- Механизм блокировок. Виды блокировок. Централизованное блокирование, блокирование первичных копий и распределенное блокирование. Блокировка
- Метки времени
- Оптимистические методы
- Понятие проекта информационной системы, его структура. Экономико-организационные и информационно-технологические принципы проектирования информационных систем.
- 1. Экономико-организационные
- 2. Информационно-технологические
- Жизненный цикл разработки систем. Основные стадии жизненного цикла. Модели жизненного цикла.
- Каноническое проектирование информационных систем. Стадии процесса проектирования информационных систем.
- Состав работ на предпроектных стадиях проектирования системы. Обследование информационной системы. Описание постановки задачи. Техническое задание.
- Состав работ на стадиях технического и рабочего проектирования информационной системы.
- Состав работ на стадиях ввода в действие и сопровождения информационной системы.
- Case-технологии, основные принципы. Этапы создания информационной системы на основе case-технологии. Факторы эффективности case-технологии.
- Case-средства, их классификация. Примеры case-средств и их характеристика.
- Типовое проектирование информационных систем. Классификация, примеры типовых информационных систем и их характеристика.
- Проектирование системы управления в Business Studio.
- 29. Возможности и реализуемые стандарты современного пакета бизнес- моделирования Business Studio.
- 28. Основные задачи администратора базы данных: