Синхронизационные захваты
Основой является захват транзакциями объектов БД. Захват состоит в том, что каким-то образом транзакция фиксирует намерение работа с объектом в каком-то режиме, а режим определяется видом операции. Существует два режима:
a) совместный S (Shared): требуется, когда транзакция собирается читать объект;
b) монопольный X (eXclusive): соответствует операциям занесения, удаления и модификации информации.
Если есть транзакция Т, объект БД r, то синхронизация над объектом может проходить либо в совместном режиме, либо в монопольном режиме.
При синхронизационных захватах транзакция должна предварительно захватить объект, а потом выполняться.
На сколько захваты разными транзакциями одного объекта совместимы друг с другом?
Таблица совместимости захватов в разных режимах:
Т1 | |||
T2 | S | X | |
– | Да | Да | |
S | Да | Нет | |
X | Нет | Нет |
В соответствие с таблицей, если какой-то объект уже закончен, то последующие захваты проверяются по таблице и либо разрешаются, либо запрещаются, т.е. транзакция блокируется, т.к. не может осуществить захват требуемого объекта в требуемом режиме. “Нет” соответствует конфликтам WW, WR, RW.
Чтобы это реализовать используется двухфазный протокол синхронизационных захватов (2PL). В соответствие с ним выполнение транзакции разбивается на 2 фазы:
I. накопление захватов;
II. фиксация/откат и освобождение захватов.
При этом важно отметить уровень захвата объектов, т.е. что следует считать объектом захвата. Выделяют несколько логических уровней:
– БД;
– Файл; ––––––––––
– Отношение; |– страница;
– Кортеж;
– Атрибут;
Что из них захватывать?
Чем выше уровень захвата, тем меньше возможность организовать параллельную работу. Но чем меньше уровень, тем сложнее обнаруживать конфликты. Наиболее распространённым решением этой проблемы является захват на уровне кортежей или на уровне страниц. Но такие захваты позволяют проникнуть нарушениям целостности. Методом борьбы с этими нарушениями являются гранулированные синхронизационные захваты.
Дата добавления: 2014-12-20; просмотров: 901;