ACCELERATED DATABASE RECOVERY

¿Cuantas veces has querido que al hacer Rollback de una transaccion el SQL Server no se demore tanto? O tambien cuando se te apago el servicio de SQL Server de forma inesperada por alguna falla del SO o equipo que la base no se demore tanto en estas en modo recovery?

Pues bien, en SQL Server 2019 hay una nueva funcionalidad denominada Accelerated Database Recovery” (ADR) la cual nos permitira realizar este tipo de mejoras.

En este post vamos a probar esta nueva funcionalidad de SQL Server 2019, en mi caso estoy usando SQL Server CTP 3.1 montado en un docker con la imagen de Linux Ubuntu.

Funcionamiento del TLOG sin ADR

La siguiente imagen contiene el funcionamiento del TLOG de una base SQL Server sin usar ADR (en otras palabras hasta el momento sin tener SQL Server 2019)

Funcionamiento del TLOG usando ADR

La siguiente imagen ilustra el funcionamiento del TLOG usando la nueva funcionalidad de SQL Server ADR

Haciendo pruebas

Ahora probaremos la funcionalidad de ADR haciendo un Rollback en una transaccion

El tiempo de procesamiento en mi equipo fue el siguiente

SQL Server Execution Times:
CPU time = 6600 ms, elapsed time = 7679 ms.

Hacer este proceso de Rollback ha llevado el siguiente tiempo:

SQL Server Execution Times:
CPU time = 910 ms, elapsed time = 4445 ms. 

El insert usando ADR ha consumido los siguientes recursos y tiempos

SQL Server Execution Times:
CPU time = 6030 ms, elapsed time = 7415 ms.

Como podemos observar no se ve un incremento en los tiempos de inserción por tener el ADR activo.

Usando ADR activo el tiempo y recursos del rollback han sido los siguiente:

SQL Server Execution Times:
CPU time = 10 ms, elapsed time = 3 ms.

Aquí podemos observar que antes nuestro rollback había demorado unos 4455 ms con un consumo de cpu de 910 vs los 3ms de tiempo y 10ms de CPU con ADR activo

Conclusiones

ADR parece ser una muy buena funcionalidad que trae SQL Server 2019, sobre todo para aquellos procesos largos donde se necesitan hacer rollbacks.

Mas allá de esto lo que hay que aclarar es que ADR por el momento no viene activo por defecto, con lo cual uno como DBA debe indicarle a SQL server sobre cual base se aplica.

 

SQL Server 2019 Setup

SQL Server 2019 Setup

SQL Server 2019 viene con muchos cambios si lo comparamos con su version anterior.
En este post vamos a ver como instalar SQL Server 2019 para Windows paso a paso y revisar los cambios en el instalador. 

Paso 1: Descargar SQL Server 2019

El primer paso será descargar SQL Server 2019 para Windows (en nuestro caso lo instalaremos sobre este SO pero también lo puede hacer sobre Linux o Docker), en nuestro caso usaremos la versión de beta pero recuerde que estará disponible también una versión developer la cual se puede usar para pruebas.
Para descargar SQL 2019 de prueba puede utilizar el siguiente enlace: https://www.microsoft.com/en-us/sql-server/sql-server-2019

Paso 2: Iniciar el instalador

Luego de haber descargado el archivo lo ejecutaremos para asi poder iniciar el proceso de instalación de SQL Server 2019.

Aqui podremos seleccionar las distintas opciones, yo recomiendo usar o Custom o sino Download Media (me gusta mas esta ultima opcion ya que permite descargar por completo el instalador y ante algun incidente poderlo volver a lanzar sin la necesidad de descargarlo nuevamente)

Luego de haber descargado debemos montar el .iso para iniciar el proceso de instalación

Paso 3: Instalar SQL Server 2019

Instalaremos una nueva instancia de MSSQL 2019 seleccionando Installtion –> New Server Stand-Alone installation or add features to existing installation. 

Ahora solo nos queda seguir el asistente para instalar los distintos componentes de SQL Server 2019.
En este caso solamente instalare el motor de bases de datos relacional

Configuramos el nombre de la instancia, en este ejemplo usaremos la instancia default (no name instance)

En las opciones de configuración del servidor lo que haremos es poner el servicio del agente en modo automatico (viene por defecto en modo manual) y ademas darle permisos a la cuenta de servicios a la politica de “Perform Volume Maintenance task” para poder mejorar la performance en el crecimiento de los archivos y restore.

https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-2017

Cambios en la configuración del engine de base de datos

En la seccion de configuracion del engine de base de datos se han hecho modificaciones con respecto a los instaladores anteriores.
Se ha agregado las opciones de configurar el Maxdop del servidor (grado de paralelismo) como así también la memoria máxima, en ambos casos usando las recomendaciones que siempre dio Microsoft con respecto a estos dos ítems.

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-max-degree-of-parallelism-server-configuration-option?view=sql-server-2017

 

Conclusiones

El instalador de SQL Server 2019 es muy similar a su version anterior (SQL 2017) en el cual se han agregado cambios en la configuracion del engine en lo que respecta a Maxdop y configuracion de memoria.
Si bien esta tarea se puede hacer luego de las instalaciones, en muchos casos no se realizaba o de hacerlo de hasta de forma incorrecta. Estos parámetros de configuración son muy importantes para poder evitar problemas de performance en nuestra instancia de MSSQL.

Video

En el siguiente video muestro como hacer una instalación de SQL 2019 paso a paso y tambien las novedades en el mismo.