17 noviembre 2010

Problemas de rendimiento de SQL Server y configuración del TempDB

Muchas veces tenemos problemas de desempeño cuando estamos trabajando con SQL Server. En varios casos el cuello de botella está en la apropiada configuración de la base de datos TempDB (la base de datos para operaciones internas o temporales que usa SQL Server). Líneas abajo está la referencia a un link que me parece bastante importante compartir y lo deben internalizar para cada implementación de SQL Server que hagan, principalmente cuando tengan procesos de ETL que trabajen con grandes volúmenes de datos.

Básicamente los best practices recomiendan crear tantos files de datos al TempDB (mdf, ndf) como “cores” tenga su servidor (cada microprocesador tiene un número de cores). En el caso de los nuevos servidores que están saliendo al mercado en donde un solo procesador puede tener hasta 12 cores (por tanto con 4 procesadores tendría un total de 48 cores), de acuerdo a la experiencia, los foros de MVPs en SQL sugieren que no necesariamente se deben crear los 48 archivos, sino que se debe comenzar con la proporción 1 a 4 ó 1 a 8  (el primer número indica la cantidad de archivos que se deben crear para el TempDB y el segundo la cantidad de cores) y a partir de ahí monitorear con los los Dynamic Management Views [sys.dm_exec_request o sys.dm_os_waiting_tasks] a ver si hay contención (wait resources / contención – tipo LATCH) para la base de datos TempDB.

Una herramienta bastante recomendada de usar para asegurar de que nuestro servidor siga varios best practices como la del TempDB es el SQL Server Best Practices Analyzer (BPA) para SQL Server 2008 o 2008 R2.

Más detalles en el link: Recommendations to reduce allocation contention in SQL Server tempdb database” http://support.microsoft.com/kb/2154845

Alan