Compartir a través de


Registro de transacciones de escritura anticipada

En este tema se describe el papel que cumple el registro de transacciones de escritura anticipada en la grabación de modificaciones de datos en disco. Para obtener información básica acerca de los registros de transacciones, vea Información general del registro de transacciones.

SQL Server usa un registro de escritura anticipada que garantiza que ninguna modificación de datos se escribe en el disco antes que la entrada de registro asociada. Así se mantienen las propiedades ACID para una transacción. Para obtener más información acerca de las transacciones y las propiedades ACID, vea Transacciones (motor de la base de datos).

Para entender cómo funciona el registro de escritura anticipada es importante saber cómo se escriben los datos modificados en el disco. SQL Server mantiene una caché de búfer que lee las páginas de datos cuando estos deben recuperarse. Las modificaciones de los datos no se escriben directamente en el disco, sino en la copia de la página que está en la caché del búfer. La modificación no se escribe en el disco hasta que se llega a un punto de comprobación en la base de datos o es necesario escribir la modificación en el disco para que el búfer pueda utilizarse para una nueva página. A la escritura en el disco de una página de datos modificada desde la caché del búfer se le llama vaciar la página. Una página modificada en caché, pero que todavía no se ha escrito en disco, se denomina página desfasada.

En el momento en que se efectúa la modificación en la página del búfer, se escribe una entrada de registro en la caché del registro para grabar dicha modificación. Esta entrada de registro se tiene que escribir en el disco antes de que la página desfasada asociada se vacíe de la caché del búfer al disco. Si la página desfasada se vacía antes de que se escriba el registro, creará una modificación en el disco que no se puede revertir si el servidor genera un error antes de que la entrada de registro se escriba en el disco. La lógica de SQL Server evita que una página desfasada se vacíe antes de que se escriba el registro asociado. Las entradas de registro se escriben en el disco cuando las transacciones se confirman.

Nota

Algunas unidades IDE SATA almacenan en caché las escrituras de datos en la memoria interna antes de que los datos se escriban en disco. Esto impide que el registro de escritura previa funcione correctamente. Si el equipo que ejecuta SQL Server usa uno de estos tipos de discos, debe habilitar la opción enable_force_flush.