SQL Server 2019 RTM

Hoy 4 de noviembre de 2019 se acaba de liberar la ultima version de SQL Server (2019). Si desea probar la edición developer, trial o express la puede descargar del siguiente link

Novedades

La versión 2019 de SQL Server tiene una cantidad de novedades con respecto a su versión anterior 2017 muy importantes, entre ellas podemos mencionar:
  • Data Virtualization
  • Big Data Cluster
  • Row mode memory grant feedback
  • Batch mode on rowstore
  • Scalar UDF Inlining
  • Table variable deferred compilation
  • Approximate query processing with APPROX_COUNT_DISTINCT
  • Hybrid buffer pool
  • Memory-optimized TempDB metadata
  • In-Memory OLTP support for Database Snapshots
  • Support for UTF-8 character encoding
  • JAVA Support
  • Accelerated database recovery
Para conocer todas las nuevas funcionalidades podes acceder el siguiente link

SQL Server 2019 Big Data Cluster

El pasado miércoles 18 de septiembre de 2019 y junto a SQL Pass Argentina he impartido una charla en la que presente SQL Server 2019 Big Data Cluster para escalar y procesar petabytes usando la nueva arquitectura del motor de base de datos.

El evento tuvo una duración de día completo con unos 80 asistentes de distintas empresas

Les comparto algunas galerías de fotos como así también mi presentación.

Aquí comparto mi presentación 

Links de interes

Les comparto los siguientes links relacionados a SQL Server 2019 Big Data Cluster

Workshops

Deploy usando Python

Deploy usando Azure Data Studio

Azure Data Studio Insider

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

Paso 1: Creando base de datos
CREATE DATABASE TRIGGERDB;
GO
USE TRIGGERDB
GO
Paso 2: Creando una tabla y llenando registros en una transacción
SET STATISTICS TIME ON

BEGIN TRANSACTION
DROP TABLE IF EXISTS t1;

SELECT TOP 5000000 t1.* 
INTO t1 
FROM sys.all_objects AS t1
CROSS JOIN sys.all_objects AS t2
CROSS JOIN sys.all_objects AS t3

El tiempo de procesamiento en mi equipo fue el siguiente

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

Paso 3: Haciendo un Rollback de la transacción
ROLLBACK TRAN

Hacer este proceso de Rollback ha llevado el siguiente tiempo:

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

Paso 4: Activar ADR para la base de datos
ALTER DATABASE triggerdb 
SET ACCELERATED_DATABASE_RECOVERY = ON;
GO
Paso 5: volvemos a hacer el insert en la transacción
BEGIN TRANSACTION

DROP TABLE IF EXISTS t1;

SELECT TOP 5000000 t1.* 
INTO t1 
FROM sys.all_objects AS t1
CROSS JOIN sys.all_objects AS t2
CROSS JOIN sys.all_objects AS t3

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.

Paso 6: Hacemos el Rollback con ADR activo
ROLLBACK TRAN

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 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.