Пусть имеются два простых условия
Достаточно очевидно следующее утверждение:
Пусть имеются два простых условия scond1
и scond2. Пусть транзакция T1
запрашивает блокировку scond1, а транзакция T2
– scond2
в режимах, которые были бы несовместимы, если бы scond1
и scond2
являлись не условиями, а объектами базы данных (S-X, X-S, X-X). Эти блокировки совместимы в том и только в том случае, когда прямоугольники, соответствующие scond1
и scond2, не пересекаются.
Это утверждение действительно очевидно (каждому k-мерному прямоугольнику в n-мерном пространстве возможных значений кортежей Tab
соответствует некоторое подмножество возможных значений кортежей, и отсутствие пересечения у двух прямоугольников гарантирует отсутствие конфликтов транзакций), но для наглядности на рис. 13.5 приводится иллюстрирующий пример, показывающий, что в каких бы режимах не требовала транзакция T1
блокировки условия (0 < a < 5) & (b = 5), а транзакция T2
– блокировки условия (0 < a <6) & (0 < b <4), эти блокировки всегда будут совместимы.
Рис. 13.5. Простые условия, блокировки которых совместимы
Интересно, что при поддержке такой системы блокировок простых условий можно обойтись без гранулированных блокировок. В частности, чтобы гарантированно заблокировать таблицу целиком, достаточно заблокировать условие &1
i
n
(min(mi) < имя_поляi
< max(mi)). Чтобы заблокировать базу данных, достаточно заблокировать условие, являющееся конъюнкцией условий блокировки всех таблиц этой базы данных.
Заметим, что блокировки простых условий описываются таблицами, немногим отличающимися от таблиц традиционных синхронизаторов с гранулированными блокировками. Поэтому введение в СУБД механизма предикатных блокировок не приводит к значительным усложнениям.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий