Partilhar via


Conceitos básicos de TxF

Ler Isolamento

O NTFS transacional (TxF) fornece consistência confirmada por leitura.

Um gravador transacionado refere-se a um identificador de arquivo transacionado aberto com qualquer permissão que não faz parte do acesso de leitura genérico, mas faz parte do acesso de gravação genérico. Um escritor transacionado visualiza a versão mais recente de um arquivo que inclui todas as alterações feitas pela mesma transação. Só pode haver um gravador de transações por ficheiro. Os escritores não transacionados estão sempre bloqueados por um escritor transacionado, mesmo que o ficheiro seja aberto com permissões de escrita partilhada.

Um leitor transacionado refere-se a um manipulador de ficheiro transacionado aberto com qualquer permissão que é parte do acesso de leitura genérico, mas não é parte do acesso de escrita genérico. Um leitor transacional exibe uma versão confirmada do arquivo que existia no momento em que o identificador do arquivo foi aberto. O leitor envolvido em transações é isolado dos efeitos dos escritores envolvidos em transações. Isso fornece uma exibição consistente do arquivo apenas durante a vida útil do identificador de arquivo e bloqueia gravadores não transacionados.

Observação

Quando um identificador é aberto para modificação com a função CreateFileTransacted , todas as aberturas subsequentes do ficheiro dentro dessa transação, seja em modo de leitura ou não, são convertidas pelo sistema para atuarem como um escritor transacionado, para efeitos de isolamento e outras semânticas transacionais. Isso significa que, posteriormente, quando um identificador é aberto para acesso somente leitura, o identificador não recebe uma visualização do arquivo antes do início da transação; ele recebe a visualização de transação ativa do arquivo.

Um identificador de arquivo não transacionado não vê nenhuma alteração feita em uma transação até que a transação seja confirmada. O identificador de arquivo não transacionado recebe uma exibição isolada que é semelhante a um leitor transacionado, mas, ao contrário de um leitor transacionado, ele recebe a atualização de arquivo quando um gravador transacionado confirma a transação.

Níveis de isolamento

TxF fornece isolamento de leitura comprometida. Isso significa que as atualizações de arquivos não são vistas fora da transação. Além disso, se um arquivo for aberto mais de uma vez durante a leitura de arquivos dentro da transação, você poderá ver resultados diferentes a cada abertura subsequente. Os ficheiros que estavam disponíveis na primeira vez que os acedeu podem não estar disponíveis (porque foram eliminados) ou vice-versa.

Bloqueio transacional

A criação de um gravador transacional em um arquivo bloqueia transacionalmente o arquivo. Depois de um arquivo ser bloqueado por uma transação, outras operações do sistema de ficheiros que não fazem parte dessa transação e que tentem modificar o arquivo bloqueado de forma transacional falharão com ERROR_SHARING_VIOLATION ou ERROR_TRANSACTIONAL_CONFLICT.

A tabela a seguir resume o bloqueio transacional.

Arquivo atualmente aberto por

Tentativa de abrir o arquivo por

Transacionado

Não transacionado

Leitor

Leitor/Escritor

Leitor

Leitor/Redator

Leitor de transações

Sim

Sim

Sim

Nº 2

Leitor/Gravador Transacional

Sim

Nº 2

Sim

Nº 2

Leitor sem transacções

Sim

Sim

Sim

Sim

Leitor/gravador não transacionável

Nº 1

Nº 1

Sim

Sim

  1. Falha devido a ERROR_TRANSACTIONAL_CONFLICT
    2. Apresenta o erro ERROR_SHARING_VIOLATION

Se você abrir um fluxo nomeado para uma modificação que está usando uma transação, todo o arquivo deverá ser bloqueado.

Além do bloqueio transacional, aplicam-se regras típicas de compartilhamento de arquivos NTFS.

Você precisa considerar os dois modos de compartilhamento de arquivos a seguir em paralelo:

  • O modo de bloqueio transacional.
  • Modos normais de partilha de ficheiros.

Qualquer que seja o modo mais restritivo é o que se aplica.