-
Notifications
You must be signed in to change notification settings - Fork 0
БД8. Управление транзакциями. Типы транзакций. Свойства транзакций.
Транзакция является логической единицей обработки в СУБД.
- Если транзакция выполнена успешно, все модификации данных, сделанные в течение транзакции, принимаются и становятся постоянной частью базы данных.
- Если в результате выполнения транзакции происходят ошибки и должна быть произведена отмена или выполнен откат, все модификации данных будут отменены.
Управление транзакциями в приложениях реализуется, главным образом, путем указания того, когда транзакция начинается и заканчивается. В системе должна быть возможность правильной обработки ошибок, прерывающих транзакцию до ее окончания.
- Явные транзакции. Каждая транзакция явно начинается с инструкции BEGIN TRANSACTION и явно заканчивается инструкцией COMMIT или ROLLBACK.
- Неявные транзакции. Новая транзакция неявно начинается, когда предыдущая транзакция завершена, но каждая транзакция явно завершается инструкцией COMMIT или ROLLBACK.
Инструкция COMMIT: если транзакция выполнена успешно, ее следует зафиксировать. COMMIT гарантирует, что все изменения в пределах данной транзакции стали постоянной частью базы данных.
Инструкция ROLLBACK: если в транзакции произойдет ошибка или пользователь решит отменить транзакцию, следует выполнить ее откат. ROLLBACK отменяет все изменения, сделанные в пределах транзакции, возвращая данные в то состояние, в котором они находились на начало транзакции. Инструкция ROLLBACK также освобождает удерживаемые транзакцией ресурсы.
Свойства ACID используются для поддержания целостности базы данных во время обработки транзакций:
- Атомарность: транзакция — это единица операции. Вы либо выполняете его полностью, либо не выполняете вообще. Не может быть частичного исполнения.
- Согласованность: после выполнения транзакции она должна перейти из одного согласованного состояния в другое.
- Изоляция: транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время одновременного выполнения транзакции промежуточные результаты транзакций, выполняемые одновременно выполняемыми транзакциями, не должны быть доступны друг другу. (Уровень 0,1,2,3)
- Долговечность: · После успешного завершения транзакции изменения в базе данных должны сохраняться. Даже в случае системных сбоев.