Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД - вопросы.docx
Скачиваний:
0
Добавлен:
03.08.2024
Размер:
2.48 Mб
Скачать
  1. Гранулированные синхронизационные захваты.

Гранулированные синхронизационные захваты IS (Intented for Shared lock) - совместный режим (например для чтения) IX (Intented for eXclusive lock) - монопольный захват (например для удаления) SIX (Shared, Intented for eXclusive lock) - совместный захват впоследствии захватываются входящие в него объекты в монопольном режиме

Гранулированные синхронизованные захваты (англ. coarse-grained locking) - это метод синхронизации, при котором блокировка применяется ко всему объекту или структуре данных целиком. Это означает, что только один поток может получить доступ к объекту или структуре данных в любой момент времени, даже если другие потоки не работают с конкретными частями объекта или структуры данных.

Предикатные синхронизованные захваты (англ. fine-grained locking) - это метод синхронизации, при котором блокировка применяется только к определенным частям объекта или структуры данных, которые используются конкретным потоком. Это позволяет нескольким потокам работать с разными частями объекта или структуры данных одновременно.

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

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

Каждой транзакции назначается временная метка TS соответствующая времени начала выполнения. Если Ti старше Tj, то TS(Ti) < TS(Tj).

Когда транзакция откатывается, ей назначается новая временная метка. Каждый объект данных Q задействованный транзакцией помечается двумя метками. W-TS(Q) — временная метка самой молодой транзакции, успешно выполнившей запись над Q. R-TS(Q) — временная метка самой молодой транзакции, выполнившей запись чтения над Q.

Когда транзакция T запрашивает чтение данных Q возможны два варианта.

Если TS(T) < W-TS(Q), то есть данные были обновлены более молодой транзакцией, то транзакция T откатывается.

Если TS(T) >= W-TS(Q), то чтение выполняется и R-TS(Q) становится MAX(R-TS(Q), TS(T)).

Когда транзакция T запрашивает изменение данных Q возможны два варианта.

Если TS(T) < R-TS(Q), то есть данные уже были прочитаны более молодой транзакцией и если произвести изменение, то возникнет конфликт. Транзакция T откатывается.

Если TS(T) < W-TS(Q), то есть транзакция пытается перезаписать более новое значение, транзакция T откатывается. В остальных случаях изменение выполняется и W-TS(Q) становится равным TS(T).

Не требуется дорогостоящего построения графа ожидания. Более старые транзакции зависят от более новых, следовательно в графе ожидания нет циклов. Нет взаимоблокировок, поскольку транзакции не ожидают, а сразу откатываются. Возможны каскадные откаты. Если Ti откатилась, а Tj прочитала данные которые изменила Ti, то Tj тоже должна откатиться. Если при этом Tj уже была закоммичена, то возникнет нарушения принципа устойчивости.

Соседние файлы в предмете Проектирование баз данных