Поделиться через


Транзакции

Обновлен: Ноябрь 2007

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

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

Например, в автоматизированной банковской транзакции, чтобы правильно выполнить перевод денег со счета A на счет B, кредитованию счета B должно предшествовать списание денег со счета А, в противном случае транзакция должна завершиться ошибкой.

Транзакция должна иметь набор свойств ACID. Это значит:

  • Атомарность (Atomicity)   Транзакция является наименьшей неделимой единицей работы и выполняется только один раз, независимо от того вся ли работа выполнена либо она не выполнена вообще.

  • Целостность (Consistency)   Транзакция сохраняет целостность данных, преобразуя одно согласованное состояние данных в другое согласованное состояние. Данные в транзакции должны иметь семантическую сохранность.

  • Изоляция (Isolation)   Транзакция является единицей изоляции и каждая из них возникает отдельно и независимо от параллельных транзакций. Транзакция никогда не должна встречать промежуточные стадии другой транзакции.

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

Можно выполнить поддержку транзакций в OLE DB (см. Поддержка транзакций в OLE DB) или ODBC (см. Транзакция (ODBC)).

Распределенная транзакция предназначена для обновления распределенных данных, т.е. данных, расположенных на нескольких компьютерах в сети. Если необходимо выполнить поддержку транзакций в распространенной системе, следует использовать платформу Microsoft .NET Framework, а не поддержку транзакций OLE DB.

Дополнительные сведения о поддержке транзакций в Microsoft .NET Framework см. в разделе Обработка транзакций в SDK (пакет средств разработки программного обеспечения) для Windows.

См. также

Основные понятия

Программирование доступа к данным