jueves, 8 de junio de 2023

SQL Server Conociendo sobre CHECKPOINT

Introducción

Mucha gente tiende a preguntarse, ¿cómo es que la base de datos se mantiene actualizada, aún después de tener un evento de falla de energía, sin que diera tiempo de guardar los cambios? Es bien sabido que un manejador de base de datos relacional maneja mucha información en memoria, por lo que cuando se lleva a cabo una consulta de información de manera frecuente, la respuesta es casi inmediata. Ahora bien, es posible que la información sea actualizada, ya sea por la modificación de la información ya previamente registrada o el ingreso de nueva información, por lo que se requiere mantener un mecanismo que apoye que la información que se encuentre en memoria, esta sea escrita en los discos, de tal forma que la información este sincronizada. Por ello se utiliza un checkpoint.

¿Cómo funciona el Checkpoint?


Un Checkpoint (punto de control) se crea como un punto bien conocido desde el cual el Motor de base de datos de Microsoft SQL Server puede comenzar aplicando los cambios contenidos en el registro durante la recuperación después de un apagado del servidor o un bloqueo inesperado. Por lo tanto, un punto de control escribe las páginas modificadas que están actualmente en la memoria (conocidas como páginas desactualizadas) y la información del registro de transacciones de la memoria al disco y registra la información en el registro de transacciones. Es por motivos de rendimiento que Motor de base de datos realiza modificaciones en las páginas de la base de datos en la memoria caché del búfer y no escribe estas páginas en el disco después de cada cambio.

Representacion del concepto de Checkpoint 

Tipos de Checkpoint

Es posible indicar que el proceso de punto de control se puede categorizar en los siguientes tipos:

  • Automático – Es un proceso en segundo plano realizado por defecto, este tipo está asociado a la opción de configuración del servidor “intervalo de recuperación”. El valor predeterminado se establece en cero, lo que significa un objetivo de un minuto. Esta es una opción de configuración avanzada. Esta opción solo está disponible para entornos locales e IaaS. Para modificar el valor de “intervalo de recuperación” ejecute los siguientes comandos:

sp_configure 'show advanced options', 1 

RECONFIGURE with override 

go 

sp_configure 'recovery interval', '<seconds>' 

go
sp_configure 'show advanced options', 0 
RECONFIGURE with override 
 

  • Interno - esto ocurre en algunos eventos clave en Microsoft SQL Server, como durante un proceso de copia de seguridad de la base de datos o cuando se crea una instantánea de la base de datos, incluido el proceso creado por un comando DBCC CHECKDB. Otro proceso que puede generar un punto de control interno es el cierre de los servicios de Microsoft SQL Server. Es importante indicar que estos procesos internos de puntos de control no pueden ser controlados por un DBA.


  • Manual - esto se hace ejecutando el comando T-SQL CHECKPOINT, el comando se ejecuta en la base de datos seleccionada. Cuando ejecuta el comando Transact-SQL CHECKPOINT, el punto de control manual se produce en la conexión de base de datos actual. De forma predeterminada, los puntos de control manuales se ejecutan hasta su finalización. Opcionalmente, el parámetro de duración del punto de control se puede indicar para especificar una cantidad de tiempo solicitada, en segundos, para que se complete el punto de control. El comando para hacer el punto de control manual es:

 

USE [master]; 

GO 

CHECKPOINT <checkpoint_duration_in_Seconds> 

GO; 

 

  • Indirecto - a partir de Microsoft SQL Server 2012, esta función se agregó a las propiedades de la base de datos, de esta manera, es posible indicar el tiempo de recuperación objetivo para una base de datos, independientemente de la recuperación objetivo indicada para el servidor. Esta opción solo se puede usar en entornos locales e IaaS. Para especificar el tiempo de recuperación objetivo, use el comando ALTER DATABASE de la siguiente manera:

ALTER DATABASE [Database name]  

        SET TARGET_RECOVERY_TIME = <Duration_Seconds> SECONDS; 

Hay que tener cuidado al usar esta sentencia, el valor predeterminado es cero, lo que significa que el checkpoint ocurre cada minuto, igual a la opción de valor de tiempo de recuperación. Sin embargo, si el tiempo de recuperación objetivo se establece en cero y el valor del intervalo de recuperación se establece mayor a cero, el punto de control automático se toma de la opción de intervalo de recuperación. Finalmente, si el tiempo de recuperación objetivo es mayor que cero, el punto de control indirecto entra en vigor y los valores del intervalo de recuperación no se aplican.


Conclusión


Como resumen, un proceso de Checkpoint escribe todas las páginas sucias, disponibles en el caché del búfer, y los registros de transacciones en el disco, en un archivo de datos. El proceso también registra la información del checkpoint en el registro de transacciones.

No hay comentarios.:

Publicar un comentario