Cambios en la TEMPDB de SQL 2016


SQL Server 2016 vino con una importante serie de cambios, uno de ellos es en todo lo que tiene que ver con la configuración de la base de sistemas Tempdb.

En este post haremos un repaso por los cambios que hay en SQL Server 2016 relacionados a la tempdb.

Configuración automática de datafiles en el Setup:

Una de las buenas practicas que los DBA deberían seguir es la de crear tantos archivos NDF de tempdb como cores disponga el servidor hasta un máximo de 8 files máximos, por ejemplo si tenemos un server con 6 cores creamos 5 archivos ndf, si tenemos uno con 8 cores o mas cores le creamos 7 archivos NDF, estos archivos deberian ser del mismo tamaño y con el mismo tipo de crecimiento.

En el siguiente link se pueden observar algunas de estas recomendaciones

https://msdn.microsoft.com/en-us/library/ms190768.aspx

Ahora bien, esta configuración en versiones anteriores la debíamos hacer los DBA de forma manual, si bien esa es nuestra tarea lo que siempre termina pasando es que muchos servidores SQL Server no tienen configurada la Tempdb de forma adecuada.

Ahora en SQL Server 2016 desde el setup nos va a sugerir cual es la configuración adecuada.

picture1

 

Trace Flag 1117 y 1118

El usar estos dos TF aseguran que cuando tengamos mas de un datafile podamos aprovechar mejor la performance, el TF1117 hace que se crezcan al mismo tiempo todos los datafiles en paralelo reduciendo así los puntos de alocación en la tempdb, en cambio el TF1118 hace que al realizar asignaciones para tablas de usuario siempre se asignan extensiones completas.

Estos TF uno los debía habilitar y para ello o bien lo ponía en el servicio usando el configuration manager

capture

Ahora bien estos TF aplicarían a todas las bases donde se tenga mas de un datafile para el mismo FileGroup.

SQL Server 2016 nos da la posibilidad de habilitar el 1117 y 1118 por base de datos, por ejemplo para aplicar el 1118 podemos usar:

ALTER DATABASE <dbname> SET MIXED_PAGE_ALLOCATION { ON | OFF }

https://msdn.microsoft.com/en-US/library/bb522682.aspx

y para el 1117

ALTER DATABASE <dbname> MODIFY FILEGROUP <filegroup> { AUTOGROW_ALL_FILES | AUTOGROW_SINGLE_FILE } 

 https://msdn.microsoft.com/en-us/library/bb522469.aspx

Ahora bien, la TEMDB ya viene por default el 1117, para poder comprobarlo podemos usar:

capture3

 

Resumen:

En SQL Server 2016 tenemos mejoras en la configuración de la tempdb, ahora ya los DBA no van a tener mas excusas de tener bien configurada esta base de datos.