Skip to content

БД8. Управление транзакциями. Типы транзакций. Свойства транзакций.

Winterpuma edited this page Jul 5, 2021 · 1 revision

Источник вдохновения

Транзакция является логической единицей обработки в СУБД.

  • Если транзакция выполнена успешно, все модификации данных, сделанные в течение транзакции, принимаются и становятся постоянной частью базы данных.
  • Если в результате выполнения транзакции происходят ошибки и должна быть произведена отмена или выполнен откат, все модификации данных будут отменены.

Управление транзакциями

Управление транзакциями в приложениях реализуется, главным образом, путем указания того, когда транзакция начинается и заканчивается. В системе должна быть возможность правильной обработки ошибок, прерывающих транзакцию до ее окончания.

Типы транзакций

  • Явные транзакции. Каждая транзакция явно начинается с инструкции BEGIN TRANSACTION и явно заканчивается инструкцией COMMIT или ROLLBACK.
  • Неявные транзакции. Новая транзакция неявно начинается, когда предыдущая транзакция завершена, но каждая транзакция явно завершается инструкцией COMMIT или ROLLBACK.

COMMIT

Инструкция COMMIT: если транзакция выполнена успешно, ее следует зафиксировать. COMMIT гарантирует, что все изменения в пределах данной транзакции стали постоянной частью базы данных.

ROLLBACK

Инструкция ROLLBACK: если в транзакции произойдет ошибка или пользователь решит отменить транзакцию, следует выполнить ее откат. ROLLBACK отменяет все изменения, сделанные в пределах транзакции, возвращая данные в то состояние, в котором они находились на начало транзакции. Инструкция ROLLBACK также освобождает удерживаемые транзакцией ресурсы.

Свойства транзацкий

Свойства ACID используются для поддержания целостности базы данных во время обработки транзакций:

  • Атомарность: транзакция — это единица операции. Вы либо выполняете его полностью, либо не выполняете вообще. Не может быть частичного исполнения.
  • Согласованность: после выполнения транзакции она должна перейти из одного согласованного состояния в другое.
  • Изоляция: транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время одновременного выполнения транзакции промежуточные результаты транзакций, выполняемые одновременно выполняемыми транзакциями, не должны быть доступны друг другу. (Уровень 0,1,2,3)
  • Долговечность: · После успешного завершения транзакции изменения в базе данных должны сохраняться. Даже в случае системных сбоев.
Clone this wiki locally