Compartir por


Escribir páginas en el motor de base de datos

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

La E/S de una instancia del motor de base de datos incluye escrituras lógicas y físicas. Se produce una escritura lógica cuando se modifican los datos en una página de la caché del búfer. Una escritura física se produce cuando la página se escribe de la caché del búfer al disco.

Cuando se modifica una página en la memoria caché del búfer, no se vuelve a escribir inmediatamente en el disco; en su lugar, la página se marca como desfasada. Esto significa que una página puede tener más de una escritura lógica realizada antes de que se escriba físicamente en el disco. Para cada escritura lógica, se inserta una entrada del registro de transacciones en la caché del registro que registra la modificación. Las entradas del registro se tienen que escribir en el disco antes de que la página desfasada asociada se quite de la caché del búfer y se escriba en el disco.

SQL Server usa una técnica conocida como registro de escritura anticipada (WAL) que impide escribir una página sucia antes de que el registro de log asociado se escriba en el disco. Esto es fundamental para el funcionamiento correcto del administrador de recuperaciones. Para obtener más información, consulte Registro de transacciones de escritura anticipada.

Cómo SQL Server escribe una página de datos modificada

La siguiente ilustración muestra el proceso de escritura de una página de datos modificada.

Captura de pantalla de Writing_Pages.

Cuando el administrador del búfer escribe una página, busca páginas desfasadas adyacentes que puedan incluirse en una sola operación de recopilación y escritura. Las páginas adyacentes tienen identificadores de página consecutivos y proceden del mismo archivo; Las páginas no tienen que ser contiguas en la memoria. La búsqueda continúa hacia delante y hacia atrás hasta que se produce uno de los siguientes eventos:

  • Se encuentra una página limpia.
  • Se encuentran 32 páginas.
  • Se encuentra una página desfasada cuyo número de secuencia de registro (LSN) aún no se ha vaciado en el registro.
  • Se encuentra una página que no se puede bloquear inmediatamente.

De este modo, todo el conjunto de páginas se puede escribir en el disco con una sola operación de recopilación y escritura.

Justo antes de que se escriba una página, la forma de protección de página especificada en la base de datos se agrega a la página.

  • Si se agrega protección contra páginas rotas, la página debe estar bloqueada exclusivamente (EX) para la E/S. Esto se debe a que la protección contra página rasgada modifica la página y no se puede leer ningún otro subproceso.

  • Si se agrega la protección de la página de suma de comprobación o la base de datos no usa ninguna protección de página, la página tiene un bloqueo temporal de actualización (UP) para la E/S. Este bloqueo temporal evita que nadie modifique la página durante la escritura, pero permite a los lectores usarla.

Para obtener más información sobre las opciones de protección de páginas de E/S de disco, consulte Administración de búferes.

Cómo se escriben las páginas sucias al disco

Una página desfasada se escribe en el disco de una de estas tres maneras:

Los procesos de escritura diferida, escritura anticipada y punto de control no esperan a que se complete la operación de E/S. Siempre usan la operación de E/S asincrónica (o superpuesta) y continúan con otros trabajos; posteriormente, comprueban que la operación de E/S sea correcta. De este modo, SQL Server maximiza los recursos de la CPU y de E/S para las tareas apropiadas.

Proceso de escritura diferida

La escritura diferida es un proceso del sistema que mantiene tres búferes disponibles quitando las páginas usadas con poca frecuencia de la caché del búfer. Las páginas desfasadas se escriben en primer lugar en el disco.

Proceso de escritura diligente

El proceso de escritura diligente escribe páginas desfasadas de datos asociadas a operaciones con registro mínimo, como BULK INSERT y SELECT INTO. Este proceso permite que la creación y escritura de nuevas páginas tengan lugar en paralelo. Es decir, la operación de llamada no tiene que esperar hasta que finalice toda la operación antes de escribir las páginas en el disco.

Proceso de punto de comprobación

El proceso de punto de comprobación examina periódicamente la caché del búfer en busca de búferes con páginas de una base de datos especificada y escribe todas las páginas desfasadas en el disco. Los puntos de comprobación permiten ahorrar tiempo en una recuperación posterior al crear un punto en el que se garantiza que todas las páginas desfasadas se hayan escrito en el disco.

El usuario podría solicitar una operación de punto de control mediante el CHECKPOINT comando o el motor de base de datos podría generar puntos de control automáticos en función de la cantidad de espacio de registro usado y el tiempo transcurrido desde el último punto de control. Además, se genera un punto de comprobación cuando se producen determinadas actividades. Por ejemplo, cuando se agrega o quita un archivo de datos o de registro de una base de datos, o cuando se detiene la instancia de SQL Server.

Para obtener más información, consulte Puntos de control y la parte activa del registro.