Puntos de comprobación de base de datos (SQL Server)
En este tema se proporciona información general de los puntos de comprobación de base de datos de SQL Server. Un punto de comprobación crea un buen punto conocido desde donde Motor de base de datos de SQL Server puede empezar a aplicar cambios incluidos en el registro durante la recuperación después de un cierre inesperado o un bloqueo del sistema.
En este tema:
Información general de los puntos de control
Tareas relacionadas
Contenido relacionado
Información general de los puntos de control
Por motivos de rendimiento, Motor de base de datos realiza modificaciones en las páginas de la base de datos en memoria, en la memoria caché de búfer, y no escribe estas páginas en el disco después de cada cambio. En su lugar, Motor de base de datos emite periódicamente un punto de comprobación en cada base de datos. Un punto de comprobación escribe las páginas modificadas en memoria actuales (denominadas páginas desfasadas) y la información del registro de transacciones de la memoria en el disco y, además, registra información acerca del registro de transacciones.
Motor de base de datos admite varios tipos de puntos de comprobación: automáticos, indirectos, manuales e internos. En la tabla siguiente se resumen los tipos de puntos de control.
Nombre |
Interfaz Transact-SQL |
Descripción |
---|---|---|
Automático |
EXEC sp_configure 'recovery interval', 'seconds' |
Se emite automáticamente en segundo plano para cumplir el límite de tiempo superior que sugiere la opción de configuración de servidor recovery interval. Los puntos de comprobación automáticos se ejecutan hasta completarse. Los puntos de comprobación automáticos están limitados según el número de operaciones de escritura pendientes y en función de si Motor de base de datos detecta un aumento de la latencia de escritura superior a 20 milisegundos. Para obtener más información, vea Establecer la opción de configuración del servidor Intervalo de recuperación. |
Indirecto |
ALTER DATABASE … SET TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES } |
Se emiten en segundo plano para cumplir un tiempo de recuperación de destino especificado por el usuario para una determinada base de datos. El tiempo de recuperación de destino predeterminado es 0, lo que provoca que se use la heurística de puntos de comprobación automáticos en la base de datos. Si ha usado ALTER DATABASE para establecer TARGET_RECOVERY_TIME en >0, se usa este valor en vez del intervalo de recuperación especificado para la instancia de servidor. Para obtener más información, vea Cambiar el tiempo de recuperación de destino de una base de datos (SQL Server). |
Manual |
CHECKPOINT [ checkpoint_duration ] |
Se emite cuando se ejecuta un comando CHECKPOINT de Transact-SQL. El punto de comprobación manual se produce en la base de datos actual para la conexión. De forma predeterminada, los puntos de comprobación manuales se ejecutan hasta completarse. La limitación funciona de la misma forma que para los puntos de comprobación automáticos. Opcionalmente, el parámetro checkpoint_duration especifica un periodo de tiempo solicitado, en segundos, para que se complete el punto de comprobación. Para obtener más información, vea CHECKPOINT (Transact-SQL). |
Interno |
Ninguno. |
Se emite por varias operaciones de servidor, como la copia de seguridad y la creación de instantánea de base de datos, para garantizar que las imágenes de disco coinciden con el estado actual del registro. |
[!NOTA]
La opción de configuración avanzada -k SQL Server habilita a un administrador de base de datos para limitar el comportamiento de E/S de los puntos de comprobación según el rendimiento de E/S para algunos tipos de puntos de comprobación. La opción de configuración -k se aplica a los puntos de comprobación y a cualquier punto de comprobación manual e interno sin limitar.
Para los puntos de comprobación automáticos, manuales e internos, solo las modificaciones efectuadas después del último punto de comprobación se deben poner al día durante la recuperación de la base de datos. De este modo se reduce el tiempo necesario para recuperar una base de datos.
Importante |
---|
Las transacciones no confirmadas de larga ejecución aumentan el tiempo de recuperación para todos los tipos de puntos de comprobación. |
[Arriba]
En esta sección:
Interacción de las opciones TARGET_RECOVERY_TIME y "recovery interval"
Puntos de comprobación automáticos
Puntos de comprobación indirectos
Punto de comprobación interno
Interacción de las opciones TARGET_RECOVERY_TIME y "recovery interval"
En la tabla siguiente se resume la interacción entre la configuración sp_configure "recovery interval" que afecta a todo el servidor y la configuración ALTER DATABASE … TARGET_RECOVERY_TIME específica.
TARGET_RECOVERY_TIME |
"recovery interval" |
Tipo de punto de comprobación usado |
---|---|---|
0 |
0 |
Puntos de comprobación automáticos cuyo intervalo de recuperación de destino es 1 minuto. |
0 |
>0 |
Puntos de comprobación automáticos cuyo intervalo de recuperación de destino lo especifica la configuración definida por el usuario de la opción recovery interval de sp_configure. |
>0 |
No aplicable. |
Puntos de comprobación indirectos cuyo tiempo de recuperación de destino lo determina la configuración TARGET_RECOVERY_TIME, expresado en segundos. |
Puntos de comprobación automáticos
Un punto de comprobación automático se produce cada vez que el número de entradas de registro alcanza el número que Motor de base de datos calcula que puede procesar durante el tiempo especificado en la opción de configuración del servidor recovery interval. En cada base de datos sin un tiempo de recuperación de destino definido por el usuario, Motor de base de datos genera puntos de comprobación automáticos. La frecuencia de los puntos de comprobación automáticos depende de la opción de configuración de servidor avanzada recovery interval, que especifica el tiempo máximo que una determinada instancia de servidor debe usar para recuperar una base de datos durante un reinicio del sistema. Motor de base de datos calcula el número máximo de entradas de registro que puede procesar durante el intervalo de recuperación. Cuando una base de datos que usa puntos de comprobación automáticos alcanza el número máximo de entradas de registro, Motor de base de datos emite un punto de comprobación en la base de datos. El intervalo de tiempo entre puntos de comprobación puede ser muy variable. Una base de datos con una carga de trabajo de transacciones considerable tendrá más puntos de comprobación frecuentes que otra que se usa principalmente para operaciones de solo lectura.
Además, según el modelo de recuperación simple, un punto de comprobación automático también se pone en cola si el registro se llena al 70%.
Según el modelo de recuperación simple, a menos que algún factor retrase el truncamiento del registro, un punto de comprobación automático trunca la sección no usada del registro de transacciones. Por el contrario, según los modelos de recuperación completa y de registro masivo, después de que se ha establecido una cadena de copia de seguridad, los puntos de comprobación automáticos no provocan el truncamiento del registro. Para obtener más información, vea El registro de transacciones (SQL Server).
Después de un bloqueo del sistema, el periodo de tiempo necesario para recuperar una determinada base de datos depende en gran medida de la cantidad de E/S necesaria para rehacer las páginas que estaban desfasadas en el momento del bloqueo. Esto significa que la configuración recovery interval no es confiable. No puede determinar una duración de recuperación precisa. Además, cuando punto de comprobación automático está en curso, la actividad de E/S general de los datos aumenta considerablemente y es bastante impredecible.
[Arriba]
Repercusión del intervalo de recuperación en el rendimiento de recuperación
En un sistema de procesamiento de transacciones en línea (OLTP) con transacciones cortas, la opción recovery interval es el factor principal que determina la duración de la recuperación. No obstante, la opción recovery interval no afecta al tiempo necesario para deshacer una transacción de ejecución prolongada. La recuperación de una base de datos con una transacción de ejecución prolongada puede tardar mucho más que lo especificado en la opción recovery interval. Por ejemplo, si una transacción de ejecución prolongada tardó dos horas en realizar actualizaciones antes de que se deshabilitara el servidor, la recuperación real tarda un tiempo considerablemente superior al valor de recovery interval para recuperar la transacción de ejecución prolongada. Para obtener más información acerca de la repercusión de una transacción de ejecución prolongada en el tiempo de recuperación, vea El registro de transacciones (SQL Server).
Normalmente, los valores predeterminados proporciona un rendimiento de recuperación óptimo. No obstante, el cambio del intervalo de recuperación podría mejorar el rendimiento en las siguientes circunstancias:
Si la recuperación suele tardar considerablemente más de 1 minuto cuando no se están revirtiendo transacciones de ejecución prolongada.
Si observa que los puntos de comprobación frecuentes afectan negativamente al rendimiento de una base de datos.
Si decide aumentar la configuración recovery interval, es recomendable que lo haga gradualmente en pequeños incrementos y evaluando el efecto de cada aumento incremental en el rendimiento de recuperación. Este planteamiento es importante ya que a medida que aumenta la configuración recovery interval, se multiplica el tiempo que tarda en completarse la recuperación de la base de datos. Por ejemplo, si cambia recovery interval 10, la recuperación tarda aproximadamente 10 veces más en completarse que cuando el valor de recovery interval se establece en cero.
[Arriba]
Puntos de comprobación indirectos
Los puntos de control indirectos, novedad de SQL Server 2012, proporcionan una alternativa de nivel de base de datos configurable a los puntos de comprobación automáticos. Si se produce un bloqueo del sistema, los puntos de comprobación indirectos proporcionan un tiempo de recuperación más rápido y predecible que los puntos de comprobación automáticos. Los puntos de comprobación indirectos proporcionan las siguientes ventajas:
Los puntos de comprobación indirectos pueden reducir el tiempo total de recuperación de base de datos.
Los puntos de comprobación indirectos permiten controlar el tiempo de recuperación de base de datos al tener en cuenta el costo de las E/S aleatorias durante REDO. Eso permite que una instancia de servidor permanezca dentro de un límite superior en los tiempos de recuperación de una determinada base de datos (excepto cuando una transacción de ejecución prolongada provoca tiempos de UNDO excesivos).
Los puntos de comprobación indirectos reducen los picos de E/S relacionados con los puntos de comprobación al escribir continuamente las páginas desfasadas en disco en segundo plano.
No obstante, una carga de trabajo transaccional en línea en una base de datos que está configurada para puntos de comprobación indirectos podría experimentar un deterioro del rendimiento. Esto se debe a que el escritor en segundo plano que usa el punto de comprobación indirecto en ocasiones aumenta la carga de escritura total para una instancia de servidor.
[Arriba]
Puntos de comprobación internos
Hay distintos componentes del servidor que generan puntos de comprobación internos para garantizar que las imágenes de disco coinciden con el estado actual del registro. Los puntos de comprobación internos se generan en respuesta a los siguientes eventos:
Se han agregado o eliminado archivos de base de datos mediante ALTER DATABASE.
Se realiza una copia de seguridad de la base de datos.
Se crea una instantánea de base de datos, tanto explícita como internamente para DBCC CHECK.
Se realiza una actividad que requiere cerrar la base de datos. Por ejemplo, el valor de AUTO_CLOSE es ON y se ha cerrado la última conexión de usuario a la base de datos, o bien se realiza una modificación de una opción de la base de datos que requiere reiniciarla.
Se detiene una instancia de SQL Server deteniendo el servicio SQL Server (MSSQLSERVER). Las dos acciones insertan un punto de comprobación en cada base de datos de la instancia de SQL Server.
Poner fuera de línea una instancia de clúster de conmutación por error (FCI) de SQL Server.
[Arriba]
Tareas relacionadas
Para cambiar el intervalo de recuperación en una instancia de servidor
Para configurar puntos de comprobación indirectos en una base de datos
Para emitir un punto de comprobación manual en una base de datos
[Arriba]
Contenido relacionado
- Arquitectura física del registro de transacciones (en los Libros en pantalla de SQL Server 2008 R2)
[Arriba]