Published on

July 4, 2016

Mejorando el rendimiento con los checkpoints de SQL Server

SQL Server es un potente sistema de gestión de bases de datos que requiere procesos eficientes para garantizar la integridad de los datos y el rendimiento. Un proceso importante es el checkpoint, que escribe las páginas sucias de la memoria del sistema en el disco. En este artículo, exploraremos el concepto de los checkpoints y discutiremos cómo el checkpoint indirecto introducido en SQL Server 2012 puede mejorar el rendimiento.

Comprendiendo los checkpoints

Los checkpoints son esenciales para mantener la consistencia de los datos en SQL Server. Escribe las páginas sucias, que incluyen páginas de datos y de registro, de la memoria del sistema al disco. Este proceso garantiza que los cambios realizados en la base de datos se persistan y puedan recuperarse en caso de fallo.

Antes de SQL Server 2012, los checkpoints se ejecutaban utilizando el mecanismo de checkpoint automático. Sin embargo, con la introducción del checkpoint indirecto, se implementó un nuevo enfoque para mejorar el rendimiento, especialmente en sistemas con grandes huellas de memoria.

Checkpoint indirecto

El checkpoint indirecto es un tipo de checkpoint automático que se ejecuta en segundo plano a intervalos predefinidos. Estos intervalos son determinados por la opción TARGET_RECOVERY_TIME, que se puede configurar a nivel de base de datos. Por defecto, las bases de datos de SQL Server 2016 utilizan el checkpoint indirecto como configuración recomendada.

Para entender la opción TARGET_RECOVERY_TIME, echemos un vistazo a la ventana de propiedades de la base de datos. En SQL Server 2016, el valor predeterminado para TARGET_RECOVERY_TIME está configurado en 60 segundos. Sin embargo, en versiones anteriores como SQL Server 2014, el valor predeterminado es 0, lo que indica el uso de checkpoints automáticos.

Si desea habilitar el checkpoint indirecto, puede establecer un valor mayor que 0 para TARGET_RECOVERY_TIME. Esto asegurará que se utilice el algoritmo de checkpoint indirecto en lugar del checkpoint automático. Puede modificar esta configuración utilizando el comando ALTER DATABASE.

Mejora de rendimiento

Habilitar el checkpoint indirecto puede llevar a mejoras de rendimiento, incluso en entornos de bases de datos relativamente pequeños. Para probar esto, realicé experimentos en dos entornos de preparación con configuraciones similares a mis entornos de producción.

Al cambiar el TARGET_RECOVERY_TIME de 0 a 60 segundos, observé una disminución en el uso de la CPU durante las pruebas. Las pruebas se realizaron en condiciones iguales, con una carga de trabajo constante. El uso promedio de la CPU disminuyó aproximadamente un 8%, lo que indica una mejora en el rendimiento.

Es importante tener en cuenta que si bien el checkpoint indirecto se recomienda para entornos pesados, también puede proporcionar beneficios para bases de datos más pequeñas. Cualquier mejora en el rendimiento siempre es bienvenida, independientemente del tamaño de la base de datos.

Conclusión

El checkpoint indirecto introducido en SQL Server 2012 ofrece un enfoque más eficiente para gestionar los checkpoints. Al habilitar esta función y ajustar la opción TARGET_RECOVERY_TIME, puede mejorar el rendimiento y reducir el uso de la CPU.

Ya sea que tenga un entorno de base de datos grande y complejo o uno más pequeño, considerar el checkpoint indirecto puede llevar a mejoras notables. Siempre vale la pena explorar diferentes configuraciones y ajustes para optimizar el rendimiento de su SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.