ВУЗ:
Составители:
Рубрика:
63
Заметим, что в централизованных системах стоимость построения графа ожидания
сравнительно невелика, но она становится слишком большой в по-настоящему
распределенных СУБД, в которых транзакции могут выполняться в разных узлах сети.
Поэтому в таких системах обычно используются другие методы сериализации транзакций.
Еще одно замечание. Чтобы минимизировать число конфликтов между
транзакциями, в некоторых СУБД (например, в Oracle) используется следующее развитие
подхода. Монопольный захват объекта блокирует только изменяющие транзакции. После
выполнении операции модификации предыдущая версия объекта остается доступной для
чтения в других транзакциях. Кратковременная блокировка чтения требуется только на
период фиксации изменяющей транзакции, когда обновленные объекты становятся
текущими.
Метод временных меток
Альтернативный метод сериализации транзакций, хорошо работающий в условиях
редких конфликтов транзакций и не требующий построения графа ожидания транзакций.
основан на использовании временных меток.
Основная идея метода (у которого существует множество разновидностей) состоит в
следующем: если транзакция T
1
началась раньше транзакции T
2
, то система обеспечивает
такой режим выполнения, как если бы T
1
была целиком выполнена до начала T
2
.
Для этого каждой транзакции T предписывается временная метка t, соответствующая
времени начала T. При выполнении операции над объектом r транзакция T помечает его
своей временной меткой и типом операции (чтение или изменение).
Перед выполнением операции над объектом r транзакция T
1
выполняет следующие
действия:
Проверяет, не закончилась ли транзакция T, пометившая этот объект. Если T
закончилась, T1 помечает объект r и выполняет свою операцию.
Если транзакция T не завершилась, то T
1
проверяет конфликтность операций. Если
операции неконфликтны, при объекте r остается или проставляется временная метка с
меньшим значением, и транзакция T
1
выполняет свою операцию.
Если операции T
1
и T конфликтуют, то если t(T) > t(T
1
) (т.е. транзакция T является
более "молодой", чем T), производится откат T и T
1
продолжает работу.
Если же t(T) < t(T
1
) (T "старше" T
1
), то T
1
получает новую временную метку и
начинается заново.
К недостаткам метода временных меток относятся потенциально более частые
откаты транзакций, чем в случае использования синхронизационных захватов. Это
связано с тем, что конфликтность транзакций определяется более грубо. Кроме того, в
распределенных системах не очень просто вырабатывать глобальные временные метки с
отношением полного порядка (это отдельная большая наука).
Но в распределенных системах эти недостатки окупаются тем, что не нужно
распознавать тупики, а как мы уже отмечали, построение графа ожидания в
распределенных системах стоит очень дорого.
Заметим, что в централизованных системах стоимость построения графа ожидания
сравнительно невелика, но она становится слишком большой в по-настоящему
распределенных СУБД, в которых транзакции могут выполняться в разных узлах сети.
Поэтому в таких системах обычно используются другие методы сериализации транзакций.
Еще одно замечание. Чтобы минимизировать число конфликтов между
транзакциями, в некоторых СУБД (например, в Oracle) используется следующее развитие
подхода. Монопольный захват объекта блокирует только изменяющие транзакции. После
выполнении операции модификации предыдущая версия объекта остается доступной для
чтения в других транзакциях. Кратковременная блокировка чтения требуется только на
период фиксации изменяющей транзакции, когда обновленные объекты становятся
текущими.
Метод временных меток
Альтернативный метод сериализации транзакций, хорошо работающий в условиях
редких конфликтов транзакций и не требующий построения графа ожидания транзакций.
основан на использовании временных меток.
Основная идея метода (у которого существует множество разновидностей) состоит в
следующем: если транзакция T1 началась раньше транзакции T2, то система обеспечивает
такой режим выполнения, как если бы T1 была целиком выполнена до начала T2.
Для этого каждой транзакции T предписывается временная метка t, соответствующая
времени начала T. При выполнении операции над объектом r транзакция T помечает его
своей временной меткой и типом операции (чтение или изменение).
Перед выполнением операции над объектом r транзакция T1 выполняет следующие
действия:
Проверяет, не закончилась ли транзакция T, пометившая этот объект. Если T
закончилась, T1 помечает объект r и выполняет свою операцию.
Если транзакция T не завершилась, то T1 проверяет конфликтность операций. Если
операции неконфликтны, при объекте r остается или проставляется временная метка с
меньшим значением, и транзакция T1 выполняет свою операцию.
Если операции T1 и T конфликтуют, то если t(T) > t(T1) (т.е. транзакция T является
более "молодой", чем T), производится откат T и T1 продолжает работу.
Если же t(T) < t(T1) (T "старше" T1), то T1 получает новую временную метку и
начинается заново.
К недостаткам метода временных меток относятся потенциально более частые
откаты транзакций, чем в случае использования синхронизационных захватов. Это
связано с тем, что конфликтность транзакций определяется более грубо. Кроме того, в
распределенных системах не очень просто вырабатывать глобальные временные метки с
отношением полного порядка (это отдельная большая наука).
Но в распределенных системах эти недостатки окупаются тем, что не нужно
распознавать тупики, а как мы уже отмечали, построение графа ожидания в
распределенных системах стоит очень дорого.
63
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »
