
14 Вопрос
Модель транзакции
Информация в БД в любой момент времени должна быть целостной и непротиворечивой. Одним из путей обеспечения этого является использование механизма транзакций
Транзакция – это логический блок операций, которые выполняются на сервере как единое целое. Этот блок может содержать одну или несколько инструкций SQL.
ТРАНЗАКЦИЯ представляет собой выполнение последовательности операций, воздействующих на БД и переводящих ее из одного целостного состояния в другое (воздействие выражается в изменении данных в таблицах БД). Транзакция - это групповая операция или набор действий с базой данных; самым существенным для этих действий является правило либо все, либо ни чего.
В процессе выполнения транзакции возможны две ситуации:
успешно завершены все операции.
неудачно завершена хотя бы одна операция.
Использование механизма транзакций необходимо
при выполнении последовательности взаимосвязанных операций с БД
при многопользовательском доступе к БД
При выполнении транзакции система управления базами данных должна придерживаться определенных правил обработки набора команд, входящих в транзакцию. В частности, четыре правила, известные как требования ACID, гарантируют правильность и надежность работы системы.
атомарность – принцип неделимости.
согласованность – гарантирует, что по мере завершения транзакции данные переходят из одного согласованного состояния в другое, то есть транзакция не разрушает взаимной согласованности данных.
изолированность – одновременный доступ различных приложений к разделяемым ресурсам БД, координируется таким образом, чтобы эти транзакции не влияли друг на друга.
устойчивость – если транзакция завершилась успешно, то те изменения в данных, которые были при этом произведены, не могут быть потеряны даже в случае последующих сбоев или ошибок.
15 Вопрос
Управление транзакциями
Любая транзакция имеет несколько фаз.
1. Перед началом транзакции база данных находится в согласованном состоянии (оператор BEGIN TRANSACTION).
2. Приложение объявляет о начале транзакции.
3. Приложение начинает модификацию данных.
4. Когда приложение достигает этапа, на котором все модификации успешно завершены, и база данных снова находится в согласованном состоянии, приложение фиксирует транзакцию.
5. Если приложение обнаруживает ошибки, которые предотвращают завершение транзакции, оно выполняет отмену (откат) всех модификаций данных.
Возможность явного управления транзакциями предоставляет язык Transact-SQL, который имеет в своем составе следующие операторы:
BEGIN TRANSACTION - начать транзакцию, активизирует выполнение групповой операции.
COMMIT – подтвердить транзакцию. сохраняет внесенные транзакцией изменения в базу данных.
ROLLBACK – отменить транзакцию. Данная операция выполняется при возникновении ошибки при выполнении операции (например, при невозможности обновить запись).
Все операторы Transact-SQL выполняются в составе транзакций: явных, неявных или с автоматической фиксацией.