Гранулированные синхронизационные захваты
Гранулированный захват – это выделение групп объектов; если какая-то транзакция намеревается захватить объект. Она предварительно должна захватить объект более высокого уровня.
Введём несколько дополнительных режимов захватов:
IS (Intented for Shared Lode) – захватить в совместном режиме; смысл: если транзакция хочет читать кортежи из отношения, то предварительно это отношение должно быть захвачено в режиме IS;
IX (Intented for eXclusive Lode): если транзакция собирается удалять кортежи икортеж должен быть захвачен в режиме Х, то и всё отношение должно быть захвачено в режиме IX;
SIX (Shared Intented for eXclusive): составной объект захватывается совместно и в последствие его составляющие будут захвачены в монопольном режиме. Например, выполняется длинная операция просмотра отношения с возможностью удаления некоторых кортежей, то надо захватить это отношение в режиме SIX, а до этого захватить файл в режиме IS.
Таблица совместимости:
Т1 | ||||||
Т2 | X | S | IX | IS | SIX | |
– | Да | Да | Да | Да | Да | |
X | Нет | Нет | Нет | Нет | Нет | |
S | Нет | Да | Нет | Да | Нет | |
IX | Нет | Нет | Да | Да | Нет | |
IS | Нет | Да | Да | Да | Да | |
SIX | Нет | Нет | Нет | Да | Да |
Метод синхронизационных захватов не ликвидирует проблемы взаимных блокировок и главной проблемой для СУБД является поиск заблокированных транзакций, а для этого СУБД должна строить графы, где вершинами будут транзакции и объекты, и выявлять кольцевые пути.
Дата добавления: 2014-12-20; просмотров: 860;