Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Это фаза подготовительная. При этом все узлы получают информацию, необходимую для подтверждения транзакции.
При получении узлом команды подготовится можно ответить тремя способами:
1) «готов» - данные на узле были модифицированы предложением в распределенной транзакции, и узел подготовился к завершению;
2) «только чтение» данные на узле не модифицировались, а лишь читались; в этом случае нет необходимости в завершении;
3) «снять завершение транзакции» узел не может успешно подготовится.
Операции на фазе подготовки:
· узел просит подготовиться своих потомков
· узел распределяет все ресурсы, необходимые для завершения транзакции
· узел сбрасывает записи повторения, соответствующие изменениям, сделанным этой транзакцией, в свой локальный журнал повторений
· узел гарантирует, что все блокировки, удерживаемые для этой транзакции, способны пережить сбой
· узел должен ответить узлу, от которого получил транзакцию
Узел, к которому обращаются за подтверждением, называется сомнительным.
Если узел не может подготовиться к завершению транзакции, то он выполняет следующие действия:
· освобождает все ресурсы, удерживаемые в данной транзакции, и выполняет откат ее в локальной части
· отвечает узел сообщением «снять»
Эти действия стают поводом для отката транзакции в целом.
Невозможность подготовки возникает из-за блокировок пользователей и нарушений целостности системы.
Итак, подведем итог: после запуска на выполнение команды COMMIT в командном окне локальная БД просит все узлы, участвующие в транзакции, подготовиться к предстоящему завершению; все опрошенные узлы отвечают на вопрос о подготовке и, если какой-нибудь из них отвечает предложением «снять», то вся транзакция глобально откатывается, а в случае подготовки всех узлов начинается следующая фаза подтверждения.
Дата публикования: 2015-02-18; Прочитано: 198 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!