ВУЗ:
Составители:
Рубрика:
60
Рис. 5.12. Диаграмма приоритета различных типов блокировок
Стоит отметить, что (согласно протоколу преднамеренной блокировки) на уровне
отношений блокировки обычно задаются неявным образом. Например, для транзакции
считывания система может неявным образом наложить IS-блокировку на каждое
отношение, к которому обращается данная транзакция. А для транзакции обновления
вместо этого, вероятно, потребуется задать IХ-блокировку. Однако в системе также может
быть предусмотрено явное задание блокировок с помощью разного рода утверждений
LOCK, для того чтобы в случае необходимости позволить транзакциям наложить S-, X- и
SIХ-блокировки на заданном уровне отношений. Например, такое заданное явным
образом утверждение LOCK поддерживается системой DВ2 (хотя это и не является
стандартом языка SQL).
Наконец, необходимо сделать замечание об эскалации блокировок, которая реали-
зована во многих системах и представляет собой попытку балансирования между
вступающими в конфликт требованиями высокого параллелизма и низкими накладными
расходами на управление блокировками. Основная идея заключается в том, что, когда
система достигает некоторого заранее заданного порога, она автоматически заменяет
множество мелких блокировок одной крупной блокировкой. Например, набор отдельных
S-блокировок на уровне кортежа, составляющий IS-блокировку на уровне отношения,
можно преобразовать в S-блокировку на уровне отношения. На практике это решение
часто оказывается весьма полезным.
Несмотря на привлекательность метода преднамеренной блокировки
(гранулированных синхронизационных захватов), следует отметить что он не решает
проблему фантомов (если, конечно, не ограничиться использованием захватов отношений
в режимах S и X). Давно известно, что для решения этой проблемы необходимо перейти
от захватов индивидуальных объектов базы данных, к захвату условий (предикатов),
которым удовлетворяют эти объекты. Проблема фантомов не возникает при
использовании блокировки для синхронизации уровня отношений именно потому, что
отношение как логический объект представляет собой неявное условие для входящих в
него кортежей. Захват отношения (блокировка отношения) - это простой и частный случай
предикатного захвата.
Предикатные синхронизационные захваты
Рассмотрим предикатные синхронизационные захваты на примере кортежей-
"фантомов". Проблема кортежей-"фантомов" относится к более тонким проблемам
изолированности транзакций. Она вызывает ситуации, которые также противоречат
изолированности пользователей. Рассмотрим следующий сценарий. Транзакция 1
X
SIX
S
S
IS
X
SIX
S S
IS
Рис. 5.12. Диаграмма приоритета различных типов блокировок
Стоит отметить, что (согласно протоколу преднамеренной блокировки) на уровне
отношений блокировки обычно задаются неявным образом. Например, для транзакции
считывания система может неявным образом наложить IS-блокировку на каждое
отношение, к которому обращается данная транзакция. А для транзакции обновления
вместо этого, вероятно, потребуется задать IХ-блокировку. Однако в системе также может
быть предусмотрено явное задание блокировок с помощью разного рода утверждений
LOCK, для того чтобы в случае необходимости позволить транзакциям наложить S-, X- и
SIХ-блокировки на заданном уровне отношений. Например, такое заданное явным
образом утверждение LOCK поддерживается системой DВ2 (хотя это и не является
стандартом языка SQL).
Наконец, необходимо сделать замечание об эскалации блокировок, которая реали-
зована во многих системах и представляет собой попытку балансирования между
вступающими в конфликт требованиями высокого параллелизма и низкими накладными
расходами на управление блокировками. Основная идея заключается в том, что, когда
система достигает некоторого заранее заданного порога, она автоматически заменяет
множество мелких блокировок одной крупной блокировкой. Например, набор отдельных
S-блокировок на уровне кортежа, составляющий IS-блокировку на уровне отношения,
можно преобразовать в S-блокировку на уровне отношения. На практике это решение
часто оказывается весьма полезным.
Несмотря на привлекательность метода преднамеренной блокировки
(гранулированных синхронизационных захватов), следует отметить что он не решает
проблему фантомов (если, конечно, не ограничиться использованием захватов отношений
в режимах S и X). Давно известно, что для решения этой проблемы необходимо перейти
от захватов индивидуальных объектов базы данных, к захвату условий (предикатов),
которым удовлетворяют эти объекты. Проблема фантомов не возникает при
использовании блокировки для синхронизации уровня отношений именно потому, что
отношение как логический объект представляет собой неявное условие для входящих в
него кортежей. Захват отношения (блокировка отношения) - это простой и частный случай
предикатного захвата.
Предикатные синхронизационные захваты
Рассмотрим предикатные синхронизационные захваты на примере кортежей-
"фантомов". Проблема кортежей-"фантомов" относится к более тонким проблемам
изолированности транзакций. Она вызывает ситуации, которые также противоречат
изолированности пользователей. Рассмотрим следующий сценарий. Транзакция 1
60
Страницы
- « первая
- ‹ предыдущая
- …
- 58
- 59
- 60
- 61
- 62
- …
- следующая ›
- последняя »
