Гранулированные синхронизационные захваты
Гранулированный захват – это выделение групп объектов; если какая-то транзакция намеревается захватить объект. Она предварительно должна захватить объект более высокого уровня.
Введём несколько дополнительных режимов захватов:
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; просмотров: 938;
