Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора ПРИС для Тани.docx
Скачиваний:
25
Добавлен:
09.12.2018
Размер:
183.51 Кб
Скачать
  1. Параллельное выполнение транзакций. Управление параллельным выполнением транзакций. Проблемы и решения по организации управления параллельным выполнением в распределенной среде.

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

С параллельным выполнением транзакций связаны следующие основные проблемы:

  • потеря обновлений;

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

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

В сети распределенных баз данных необходимо управление параллельным выполнением.

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

Цель управления параллельным выполнением в многопользовательских базах данных состоит в обеспечении:

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

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

Выполнение множества распределенных транзакций сериализуемо тогда и только тогда, когда:

  • выполнение множества транзакций сериализуемо на каждом узле;

  • упорядочение транзакций на всех узлах одинаково.

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

Решения по организации управления параллельным выполнением в распределенной среде основаны на подходах с использованием:

  • блокировки;

  • меток времени;

  • оптимистических методов.

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

Блокировка гарантирует уникальность доступа транзакции к элементу данных и предотвращает использование данных одной транзакцией во время их использования другой. Другими словами, транзакция Т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 (разблокировано). Если некоторый объект БД блокируется транзакцией, то ни одна другая транзакция не сможет получить доступ к этому объекту.

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

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

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

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

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

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

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

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

  • блокировка от записи совместима с аналогичной блокировкой и предохраняющей полной блокировкой;

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

  • предохраняющая полная блокировка совместима со всеми блокировками, кроме полной.

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

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

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

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

  • центральный узел может стать узким местом: как из-за большого объема обработки данных, так и из-за генерируемого вокруг него интенсивного сетевого трафика;

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

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

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

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

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

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

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

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

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

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

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