double arrow

Понятие протокола. Двухфазный протокол. Двухфазные транзакции. Типы блокировок.


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

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

1.Перед 1ой операцией чтения или записи эл-та транзакция должна установить блокировку на этот эл-т.

2.Если эл-т еще не заблокирован, то блокировка устанавливается и транзакция получает доступ к эл-ту. Тоже самое происходит, если все блокировки, существующие на эл-т, включая устанавливаемую, является блокировками на чтение.

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

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

Механизм блокировки позволяет решить аномалии параллельных транзакций: потерянное обновление, зависимость от нефиксированных результатов, несогласованная обработка.

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




Блокировки м.б. 2ух видов:

1.Блокировки на чтение (S-блокировки) или разделенные блокировки. Установка такой блокировки на эл-т позволит транзакции читать эл-т, но запретит его записывать. Другие параллельно выполняемые транзакции так же могут прочитать эл-т, но не смогут записать его.

2.Блокировки на запись (X-блокировки) или эксклюзивные блокировки. Если транзакция устанавливает такую блокировку, то она сможет и читать и записывать значение эл-та при этом другие транзакции не смогут получить никакого доступа к эл-ту.

Стратегия временных отметок, оптимистические стратегии.

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

Временная отметка timesstamp – это уникальный идентификатор, создаваемый СУБД с целью обозначения относительного момента начала транзакции.

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

При использовании протокола временных отметок операция чтения или записи вып-ется в зависимости от временной отметки транзакции и временных отметок эл-та на чтение и на запись.

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



Оптимистический протокол управления параллельностью включает три фазы:

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

2. фаза проверки. Выполняется в момент фиксации результата. Сравнение локальной копии эл-тов и текущих значений этих эл-тов на диске. Если найдено отличие, то транзакция снимается и перезапускается. Если проверка прошла успешно, то транзакция завершена, вып-ся третья фаза.

3. фаза записи, в ходе к-ой новые значения эл-тов записываются на диск.

Защита БД от отказов. Типы отказов. Архивные копии БД. Журнал БД. Зафиксированные транзакции. Стратегия двухфазной фиксации.

Сбои: аппаратные(мягкие и жесткие) и программные(аварийное завершение работы СУБД, аварийное завершение пользовательской программы). В большинстве СУБД ведется журнал транзакций. Журнал – часть БД, в который поступают данные обо всех изменениях основной части БД. Журнал не доступен пользователю. Цель журнализации – возможность восстановления. Стратегия двухфазной фиксации: результаты зафиксированных транзакций должны быть сохранены в восстановленном состоянии БД, а незафиксированные должны отсутствовать. Протокол WAL. Восстанавливать надо при: индивидуальном откате транзакции, внезапной потери опер памяти(мягкий сбой), потере информации на основном внешнем носителе базы данных (жесткий сбой). Индивидуальный откат транзакции rollback(завершение транзакции, аварийное завершение прикладной программы, принудительный откат транзакции.). Основа восстановления – журнал и архивная копия БД.       









Сейчас читают про: