Состояние пользовательских транзакций на объектах
Каждый объект O в системе хранит состояние каждой пользовательской транзакции в системе. Состояние пользовательской транзакции (т.е. операции на DBIO) может принимать одно из следующих значений:
Никогда не активировалась (Never Activated)
Любая пользовательская транзакция, которая не воздействовала на O прямо или косвенно, находится в этом состоянии на O. Это эквивалентно тому, что не имеется никакой информации о пользовательской транзакции в O.
Завершена
(Completed)
Пользовательская транзакция находится в состоянии Завершена на O, если операция вызванная ей на O закончила выполнение всех своих шагов.
Находится в точке проверки (Chekpoint)
Пользовательская транзакция не произвела никаких действий с тех пор, как оказалась в точке проверки.
Задержана для проверки (BlockedForCheckPoint)
Пользовательская транзакция ожидает выполнения условий, которые будут удовлетворять переводу ее в Точку проверки.
Выполняется (Executing)
Пользовательская транзакция выполняется на O, если операция op(O), вызванная этой транзакцией выполняется.
Рис 4: Диаграмма переходов транзакции из состояния в состояние
Таблица 4: Пример изменения состояния транзакции при ее выполнении
Действия | Новое состояние транзакции | ||
Никогда не активировалась | |||
Объект O получил запрос на выполнение op(O) впервые для транзакции Tr(op(O)) и op(O) начинает выполняться | Выполняется | ||
Операция транзакции достигла описанной для нее точки проверки, все остальные активные операции на O "никогда не активировались" в точке проверки | Находится в точке проверки | ||
Операция транзакции достигла описанной для нее точки проверки, но активные операции не находятся в своих точках проверки | Блокирована для точки проверки | ||
Tr(op(O)) закончила все свои шаги | Завершена |
Таким образом, если объект имеет точки проверки, описанные для своих операций, то операции встречаются (рандеву) в точке проверки. Если операции в точке проверки произведены успешно, то в будущем нет необходимости любой операции откатываться (rollback) за точку проверки.