Базы данных. Вводный курс


Гранулированные синхронизационные блокировки - часть 4


– на то, чтобы в транзакции T2

изменять какой-либо объект o'', входящий в o. Если объекты o'

и o''

– разные, то конфликт транзакций не возникнет. Если o'

= o'', то перед чтением этот объект будет заблокирован в транзакции T1

в режиме S, а перед изменением – в транзакции T2

в режиме X. Несовместимость этих блокировок позволит избежать конфликта транзакций T1

и T2

вида R/W, и для этого не требуется несовместимость блокировок IS и IX объекта o. Аналогично можно показать совместимость блокировок IS и SIX. Несовместимость блокировок IS и X очевидна, поскольку иначе мог бы проявиться конфликт транзакций T1

и T2

вида R/W.

Блокировка объекта o

в режиме SIX в транзакции T1

позволяет этой транзакции читать любой объект o', входящий в o, без его дополнительной блокировки и изменять любой объект o', входящий в o, с его предварительной блокировкой в режиме X. Эта блокировка совместима с блокировкой объекта o

в режиме IS в транзакции T2. Действительно, блокировка объекта o

в режиме IS в транзакции T2

направлена на то, чтобы в транзакции T2

читать какой-либо объект o', входящий в o. Перед этим в транзакции T2

должна быть установлена блокировка объекта o'

в режиме S. К этому моменту у объекта o'

может отсутствовать явная блокировка, установленная в транзакции T1, что, в соответствии с семантикой блокировки SIX, означает наличие неявной блокировки o'

по чтению. Очевидно, что в этом случае конфликт транзакций T1

и T2

не возникает. К этому же моменту у объекта o'

может иметься блокировка в режиме X, установленная в транзакции T1. В этом случае запрос блокировки объекта o'

в режиме S удовлетворен не будет, и конфликт транзакций T1

и T2

вида W/R будет предотвращен без потребности в несовместимости блокировок SIX и IS. Блокировка объекта o

в режиме SIX в транзакции T1

не совместима с блокировкой объекта o

в режиме X в транзакции T2, поскольку иначе мог бы проявиться конфликт транзакций T1

и T2

вида R/W. Блокировка объекта o

в режиме SIX в транзакции T1

не совместима с блокировкой объекта o

в режиме S или IS в транзакции T2, поскольку иначе мог бы проявиться конфликт транзакций T1

и T2

вида W/R при доступе к некоторым объектам o', входящим в o. Наконец, блокировка объекта o

в режиме SIX в транзакции T1

не совместима с блокировкой объекта o

в режиме IX или SIX в транзакции T2, поскольку иначе мог бы проявиться конфликт транзакций T1

и T2

вида R/W при доступе к некоторым объектам o', входящим в o.




- Начало -  - Назад -  - Вперед -