Conceptos básicos de TxF

Aislamiento de lectura

NTFS transaccional (TxF) proporciona coherencia de lectura confirmada.

Un escritor de transacciones hace referencia a un identificador de archivo de transacción abierto con cualquier permiso que no forme parte del acceso de lectura genérico, pero que forma parte del acceso de escritura genérico. Un escritor de transacciones ve la versión más reciente de un archivo que incluye todos los cambios realizados por la misma transacción. Solo puede haber un escritor de transacciones por archivo. Los escritores no transaccionados siempre están bloqueados por un escritor de transacciones, incluso si el archivo se abre con permisos de escritura compartida.

Un lector de transacciones hace referencia a un identificador de archivo transaccionado abierto con cualquier permiso que forme parte del acceso de lectura genérico, pero que no forma parte del acceso de escritura genérico. Un lector de transacciones ve una versión confirmada del archivo que existía en el momento en que se abrió el identificador de archivo. El lector de transacciones está aislado de los efectos de los escritores de transacciones. Esto proporciona una vista coherente del archivo solo para la vida útil del identificador de archivo y bloquea los escritores no transaccionados.

Nota

Cuando se ha abierto un identificador para su modificación con la función CreateFileTransact , todas las siguientes aperturas del archivo dentro de esa transacción, tanto si el sistema convierte como de solo lectura o no un escritor de transacciones con fines de aislamiento y otra semántica transaccional. Esto significa que, posteriormente, cuando se abre un identificador para el acceso de solo lectura, el identificador no recibe una vista del archivo antes del inicio de la transacción; recibe la vista de transacción activa del archivo.

Un identificador de archivo no transaccionado no ve ningún cambio realizado dentro de una transacción hasta que se confirme la transacción. El identificador de archivo no transaccionado recibe una vista aislada similar a un lector de transacciones, pero a diferencia de un lector de transacciones, recibe la actualización del archivo cuando un escritor de transacciones confirma la transacción.

Niveles de aislamiento

TxF proporciona aislamiento de lectura confirmada. Esto significa que las actualizaciones de archivos no se ven fuera de la transacción. Además, si un archivo se abre más de una vez mientras lee los archivos dentro de la transacción, es posible que vea resultados diferentes con cada apertura posterior. Es posible que los archivos que estaban disponibles la primera vez que haya accedido a ellos no estén disponibles (porque se eliminaron) o viceversa.

Bloqueo transaccional

La creación de un escritor de transacciones en un archivo bloquea el archivo de forma transaccional . Después de que una transacción bloquee un archivo, se producirá un error en otras operaciones del sistema de archivos externas a la transacción de bloqueo que intenten modificar el archivo bloqueado transaccionalmente con ERROR_SHARING_VIOLATION o ERROR_TRANSACTIONAL_CONFLICT.

En la tabla siguiente se resume el bloqueo transaccional.

Archivo abierto actualmente por

Archivo abierto intentado por

Conseguido

No transacciones

Lector

Lector/escritor

Lector

Lector/escritor

Lector de transacciones

No2

Lector y escritor de transacciones

No2

No2

Lector no transaccionado

Lector/escritor no transaccionado

No1

No1

  1. Error con ERROR_TRANSACTIONAL_CONFLICT
    2. Se produce un error con ERROR_SHARING_VIOLATION

Si abre una secuencia con nombre para una modificación que usa una transacción, es necesario bloquear todo el archivo.

Además del bloqueo transaccional, se aplican reglas típicas de uso compartido de archivos NTFS.

Debe tener en cuenta los dos modos de uso compartido de archivos siguientes en paralelo:

  • Modo de bloqueo transaccional.
  • Modos normales de uso compartido de archivos.

El modo que sea más restrictivo es el que se aplica.