Transactions
Транзакция — это объект, определяющий логическую единицу работы. Транзакция активна до тех пор, пока имеется дескриптор, ссылающийся на транзакцию, и она считается активной, если транзакция еще не зафиксирована или откат не выполнена. Если транзакция создана и все ее дескрипторы были закрыты до фиксации или отката, транзакция будет откатена.
Рассмотрим случай транзакционного клиента пользовательского режима, который создает транзакцию для область ее операций, а затем выполняет обновления в одном или нескольких диспетчерах ресурсов. Происходят следующие события.
Клиент вызывает функцию CreateTransaction для создания транзакции и получает дескриптор этой транзакции в качестве возвращаемого значения.
Транзакция может быть открыта или унаследована любым количеством процессов; Таким образом, каждый процесс участвует в транзакции. Сбой любого из этих процессов приведет к прерыванию транзакции.
Эта транзакция может еще не быть постоянной. Только транзакции, которые достигли подготовленного состояния, должны быть восстановлены в системных сбоях, если транзакция использует предполагаемое прерывание ведения журнала.
Клиент должен явно передать транзакцию диспетчеру ресурсов.
Клиент выполняет все свои транзакционные операции с одним или несколькими модулями RM, такими как транзакционные файловые системы.
Клиент вызывает функцию CommitTransaction .
Диспетчер ресурсов получает уведомления от KTM о подготовке и фиксации данных.
Транзакции не совпадают с потоками. Несколько потоков или процессов могут быть частью одной транзакции. И наоборот, поток может быть частью нескольких различных транзакций в разное время.
Следующие функции используются с транзакциями.
Функция | Описание |
---|---|
CommitTransaction | Запрашивает фиксацию указанной транзакции. |
CommitTransactionAsync | Запрашивает фиксацию указанной транзакции. |
CreateTransaction | Создает новый объект транзакции. |
GetTransactionInformation | Возвращает запрошенные сведения об указанной транзакции. |
OpenTransaction | Открывает существующую транзакцию. |
RollbackTransaction | Запрашивает откат указанной транзакции. |
RollbackTransactionAsync | Запрашивает откат указанной транзакции. Эта функция возвращает асинхронно. |
SetTransactionInformation | Задает сведения о транзакции для указанной транзакции. |