Configuración Óptima de la Base de Datos TempDB en SQL Server
La base de datos TempDB en realidad debería de llamarse ImportanDB. En todos los años que tengo brindando consultorías de SQL este es uno de los problemas más recurrentes, la mala configuración de esta base de datos.
Recomendaciones
Separación de los archivos de datos de la base de datos TempDB en otro disco. Es muy importante para efectos de rendimiento y de monitoreo del tamaño de esta base de datos en un disco propio, separado del disco donde tenemos los archivos de datos de nuestras bases de datos o sistema operativo. Es importante para la separación de las cargas de trabajo. Tomando como base esta recomendación, es importante que puedas tener tus archivos de datos de las bases de datos propias en un disco, y otro disco para los log. Entonces vas a ocupar mínimo tres discos en producción 1. TempDB, 2. Archivos mdf o ndf, 3. Archivos log.
Si ya tienes tu servidor en producción y quieres mover la base de datos TempDB a otro disco, te adjunto el script para realizarlo:
USE master;GOALTERDATABASE tempdb
MODIFYFILE(NAME= tempdev,FILENAME='H:\Databases\DATA\tempdb.mdf');GOALTERDATABASE tempdb
MODIFYFILE(NAME= templog,FILENAME='H:\Databases\LOG\templog.ldf');GO--Después de esto es requerido reiniciar la base de datos
Tamaño iniciar y crecimiento automático. En una instalación inicial en versiones previas a la 2019, es probable que se creará una base de datos TempBD con un archivo inicial de 8MB y un archivos log de 1MB y con un crecimiento automático de 10%. Es importante recalcar que después del uso, la base de datos va a ir creciendo y en el momento que el servidor se reinicie por cualquier motivo, TempDB volverá al tamaño de la configuración base.
¿De qué tamaño tengo que configurar mi TempDB? Esta es una pregunta muy difícil, va a depender de la carga de tu servidor. Si tienes la opción de tener un disco propio para esta importante base de datos y tienes la posibilidad de asignarle bastantes gigas, entonces puedes indicarle que el tamaño original sea de un 90% de este disco, así te puedes asegurar que ningún otro archivo va a usar ese disco y no te vas a preocupar por el crecimiento automático. Si no puedes tener tu propio disco, vas a tener que administrar el tamaño. En este caso puedes dejar por un tiempo prudencial este crezca y así sabrás cuál va a ser el comportamiento que va a tener antes de asignarle un tamaño inicial y asignarle un crecimiento automático considerable, para que no este proceso no se ejecute de forma regular.
¿Cuál es el crecimiento automático recomendable? Si tienes un disco propio y pudiste separar el espacio, no vas a tener que configurar este parámetro ya que no se va a usar en el mejor de los casos. Puedes dejarlo configurado a una cantidad de megas considerable, pensando en el espacio en disco libre. Si no tienes el disco propio y compartes unidad con el sistema operativo, por ejemplo, entonces después de un tiempo prudencial viendo el comportamiento de esta base de datos, ya sabrás cuál valor para el crecimiento automático pueda tener, por ejemplo, si viste que todos los días la BD crece 5 megas, entonces puedes asignarle un valor de crecimiento de 50MB, con esto vas a asegurarte que no todos los días se ejecutará el autoincremento, no vas a tener un cuello de botella y así administrar mejor los recursos del servidor.
Tener varios archivos para la base de datos. Si tenemos la posibilidad de crear varios archivos. vamos a aumentar el rendimiento en E/S en nuestro servidor. SQL va a utilizar un algoritmo de llenado proporcional y con esto nos aseguramos que vamos a tener menos bloqueos y menos cuellos de botella, ya que si un archivo está haciendo algún proceso importante, SQL va a utilizar otro disponible.
¿Cuántos archivos? Antes se recomendaba que fuera un archivo por CPU, que aunque todavía es un buen comienzo ya no es necesario, ahora se recomienda que la configuración inicial comenzar con 8 archivos y conforme se va analizando el comportamiento añadir archivos adicionales si es necesario.
Buenas recomendaciones. Esta base de datos puede generar contención y si es muy importante tener discos apartes para los archivos de datos (Varios archivos para mejorar el rendimiento) y un disco si es posible para el archivo de log (Solo un archivo de log pq es secuencial). Antes había que habilitar unos trace flag para mejorar la contención y son -T1118 y -T1117. Adicional en Sql server 2019 ya se puede subir a RAM y esto optimiza esta base de datos.
Para el tamaño hay que investigar sobre SGAM, yo las configuro de 5 gb inicial y crecimiento uniforme.
Dejo algunos links.
!
!
!
Y no sería mejor si pegas las ligas a las páginas web en vez de las imágenes y tener que estarlas escribiendo?
Excelentes Recomendaciones, y la separación de discos me ayudo a ganar mejor performance en mi BD.
super las recomendaciones son esenciales para mejorar el rendimiento de la bd
Un crecimiento automático mal configurado en TempDB puede generar varios problemas. Si es demasiado pequeño, puede provocar que se agote el espacio en disco, lo que lleva a errores en las transacciones y bloqueos en las operaciones. Esto puede resultar en un rendimiento degradado y en la incapacidad de realizar consultas o actualizaciones.
Por otro lado, si está configurado demasiado grande, puede ocasionar un uso ineficiente de los recursos del servidor, afectando el rendimiento general y provocando tiempos de respuesta más lentos al requerir más tiempo para manejar y gestionar esos archivos grandes. Es fundamental encontrar un equilibrio basado en el comportamiento de la carga de trabajo.
Se recomienda comenzar con 8 archivos para la base de datos TempDB en SQL Server. Esto ayuda a aumentar el rendimiento en las operaciones de E/S y a reducir los bloqueos y cuellos de botella. Si es necesario, puedes añadir archivos adicionales conforme vayas analizando el comportamiento del servidor.