Gerenciador de Transações

Um TM (gerenciador de transações) é uma instância de um log. No KTM, os objetos TM especificam o log e algumas das funcionalidades do TM. Normalmente, há muitos objetos TM em um nó específico. Os RMs (resource managers) devem ser associados a um TM específico. Há três tipos de TMs:

  • Um TM volátil, que não tem log.
  • Uma TM regular, que tem um log e é usada para coordenar as transações de uma ou mais RMs.
  • Um gerenciador de transações superior.

Gerenciador de Transações Voláteis

Um TM volátil é um TM para RMs somente leitura ou voláteis. Ele não tem um log e não persiste o estado das transações entre reinicializações do sistema.

Gerenciador de Transações

Os TMs têm um log, um ou mais RMs duráveis ou voláteis ou ambos. O TM persistirá o estado de uma transação entre as reinicializações do sistema até que as transações sejam concluídas. Um modelo de anulação presumida é usado, portanto, as transações que estavam ativas, mas não preparadas quando o objeto TM é desligado, são revertidas. Ao abrir um TM pela primeira vez, você deve recuperar o TM chamando a função RecoverTransactionManager.

Gerentes de Transações Superiores

Um TM superior é um TM para outros TMs. Ele coordena transações. Ele também emite TRANSACTION_NOTIFY_PREPARE notificações para o KTM (Kernel Transaction Manager). Um exemplo de um TM superior é o Coordenador de Transações Distribuídas da Microsoft (DTC). Essa capacidade vem com uma responsabilidade adicional em tempo de recuperação. Durante a recuperação, a RM deve primeiro chamar a função OpenEnlistment para reabrir a inscrição. Ele também deve entregar (ou entregar novamente) o resultado da transação se a transação tiver sido confirmada; é gratuito entregar um resultado chamando a função CommitTransaction ou a função RollbackTransaction. Essa obrigação não termina até que tenha recebido um evento de notificação TRANSACTION_NOTIFY_COMMIT_COMPLETE ou TRANSACTION_NOTIFY_ROLLBACK_COMPLETE associado. Se uma TM superior não executar essas operações no momento da recuperação, o KTM limpará todas as transações que não receberam resultados até o final da fase de recuperação. No entanto, isso pode resultar em resultados de transação inconsistentes.

Funções do Gerenciador de Transações

As funções a seguir são usadas com gerenciadores de transações.

Função Descrição
CreateTransactionManager Cria um novo objeto TM (gerenciador de transações) e retorna um identificador com o acesso especificado.
GetCurrentClockTransactionManager Obtém um valor de relógio virtual de um gerenciador de transações.
GetTransactionManagerId Obtém um identificador para o gerenciador de transações especificado.
OpenTransactionManager Abre um gerenciador de transações existente.
RecoverTransactionManager Recupera o estado de um gerenciador de transações de seu arquivo de log.
rollforwardTransactionManager Recupera o estado de um gerenciador de transações de seu arquivo de log para o valor do relógio virtual especificado.