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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

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

Блокировка

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

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

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

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

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

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

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



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 315; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.53.209 (0.008 с.)