Transactions

Транзакция — это объект, определяющий логическую единицу работы. Транзакция активна до тех пор, пока имеется дескриптор, ссылающийся на транзакцию, и она считается активной, если транзакция еще не зафиксирована или откат не выполнена. Если транзакция создана и все ее дескрипторы были закрыты до фиксации или отката, транзакция будет откатена.

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

  1. Клиент вызывает функцию CreateTransaction для создания транзакции и получает дескриптор этой транзакции в качестве возвращаемого значения.

    Транзакция может быть открыта или унаследована любым количеством процессов; Таким образом, каждый процесс участвует в транзакции. Сбой любого из этих процессов приведет к прерыванию транзакции.

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

  2. Клиент должен явно передать транзакцию диспетчеру ресурсов.

  3. Клиент выполняет все свои транзакционные операции с одним или несколькими модулями RM, такими как транзакционные файловые системы.

  4. Клиент вызывает функцию CommitTransaction .

  5. Диспетчер ресурсов получает уведомления от KTM о подготовке и фиксации данных.

Транзакции и потоки

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

Функции транзакций

Следующие функции используются с транзакциями.

Функция Описание
CommitTransaction Запрашивает фиксацию указанной транзакции.
CommitTransactionAsync Запрашивает фиксацию указанной транзакции.
CreateTransaction Создает новый объект транзакции.
GetTransactionInformation Возвращает запрошенные сведения об указанной транзакции.
OpenTransaction Открывает существующую транзакцию.
RollbackTransaction Запрашивает откат указанной транзакции.
RollbackTransactionAsync Запрашивает откат указанной транзакции. Эта функция возвращает асинхронно.
SetTransactionInformation Задает сведения о транзакции для указанной транзакции.