¿Para que es la base de datos tempdb?

¿Para que es la base de datos tempdb?


En un día de trabajo, mi quería amiga Vivi(pequeña saltamontes), pregunto que que era eso de tempdb, para que sirve y si tiene impacto en las consulta de la base de datos, pues me tome la tarea de escribir un poco para aclararle, espero y mi explicación sea suficiente, entonces comencemos con el cuento 😀

La base de datos tempdb es un espacio de trabajo temporal. Entre otros usos, SQL Server emplea tempdb para: Almacenamiento de tablas temporales creadas explícitamente. Tablas de trabajo que contienen resultados intermedios creados durante el procesamiento y ordenación de consultas., en pocas palabras cuando ejecutamos una consulta en el SSMS, esta pasa por el tempdb, por ende de hay su importancia, por ende al instalar SQL Server debemos de configurar la  base de datos para un buen funcionamiento
Como funciona la base de datos tempdb

Dicen que una imagen vale por mil palabras, en la imagen superior podemos observar que si tenemos un único archivo en .ldf en la base de datos y realizan múltiples querys en nuestra base de datos, tendremos un típico cuello de botella
Query–Para que es la fila ?,
Servidor–para la  base de datos tempdb 
Query– Enserio, y no hay otra puerta?
Servidor– Nop el dueño muy tacaño no contrato un DBA para realizar el diseño correcto
Moraleja el instalar siguiente—siguiente no es correcto en este caso
Pero ahora queridos lectores hablando seriamente, esto tiene arreglo, debemos realizar una serie de pasos, para que nuestra base de datos pueda dar signos de vida
Paso 1: Consultar cuantos procesadores tiene nuestro servidor, para lo cual usaremos la siguiente consulta sql 
SELECT cpu_count AS logicalCPUs FROM sys.dm_os_sys_info
Paso 2: Crear un Data file por cada procesador lógico que exista en nuestro servidor, para esto validaremos cuantos DataFiles existen actualmente

select DB_NAME(mf.database_id) database_name
, mf.name logical_name, mf.file_id
, CONVERT (DECIMAL (20,2)
, (CONVERT(DECIMAL, size)/128)) as [file_size_MB]
, CASE mf.is_percent_growth
WHEN 1 THEN ‘Yes’
ELSE ‘No’
END AS [is_percent_growth]
, CASE mf.is_percent_growth
WHEN 1 THEN CONVERT(VARCHAR, mf.growth) + ‘%’
WHEN 0 THEN CONVERT(VARCHAR, mf.growth/128) + ‘ MB’
END AS [growth_in_increment_of]
, CASE mf.is_percent_growth
WHEN 1 THEN CONVERT(DECIMAL(20,2)
,(((CONVERT(DECIMAL, size)*growth)/100)*8)/1024)
WHEN 0 THEN CONVERT(DECIMAL(20,2)
, (CONVERT(DECIMAL, growth)/128))
END AS [next_auto_growth_size_MB]
, physical_name from sys.master_files mf
where database_id =2 and type_desc= ‘rows’




Paso 3: Establezca el incremento de crecimiento de archivos en un tamaño razonable para evitar que los archivos de la base de datos tempdb crezcan en un porcentaje demasiado pequeño. Si el crecimiento de los archivos es demasiado pequeño comparado con la cantidad de datos que se escriben en tempdb, es posible que sea necesario expandir tempdb constantemente. Esto afectará al rendimiento. Se recomienda seguir estas directrices generales al establecer el incremento de FILEGROWTH para archivos de tempdb.

Tamaño de archivos de tempdb
Incremento de FILEGROWTH
De 0 a 100 MB
10 MB
De 100 a 200 MB
20 MB
200 MB o superior
10%*

Paso 4:  Podría ser necesario ajustar este porcentaje en función de la velocidad del subsistema de E/S en que estén ubicados los archivos de tempdb. Para evitar que se produzcan tiempos de espera de bloqueo temporal, se recomienda limitar la operación de crecimiento automático a unos dos minutos. Por ejemplo, si el subsistema de E/S puede inicializar un archivo a 50 MB por segundo, se deberá establecer el incremento de FILEGROWTH en 6 GB como máximo, independientemente del tamaño de los archivos de tempdb. Siempre que sea posible, use la inicialización de archivos de base de datos instantánea para mejorar el rendimiento de las operaciones de crecimiento automático.
Recomendaciones 
  • Asigne a cada archivo de datos el mismo tamaño para obtener un rendimiento óptimo de relleno proporcional.
  • Coloque la base de datos tempdb en un subsistema de E/S rápido. Cree bandas en disco si hay muchos discos conectados directamente.
  • Coloque la base de datos tempdb en discos diferentes de los que utilizan las bases de datos de usuario.
SQListo!!!
Ahora, estoy listo para configurar mi tempdb?

Pequeños saltamontes paciencia debemos analizar primero como crece nuestras base de datos, para saber que tamaño seria correcto, con esto me refiero que el tiempo de crecimiento de nuestros archivos datafile no deben durar  mas de 1 minuto al expandirse, se preguntaran y como se esto?

Paso 1: Crear una tabla para guardar la información 

Paso 2: Crear procedimiento que llenara nuestra tabla con la informacion de crecimineto del log

Paso 3: Crear un Job, que recolectar nuestra información

Paso 4: Analizar los datos






Feliz día, y Gracias Totales!!!!




5 comentarios sobre “¿Para que es la base de datos tempdb?

    • el 20 octubre, 2017 a las 10:11 pm
      Permalink

      Amigo, ya le envie la inforamcion en PDF, que tenga feliz dia, no olvide que puede seguirme en el blog para tener siempre informacion actualizada

      Respuesta
  • el 26 octubre, 2017 a las 12:23 pm
    Permalink

    Buen día Juan. Interesante articulo, muy agradecido. Estoy tratando de implementarlo pero tengo dos detalles: 1) Error en el sp en las línea en donde esta gt;0, indica que es invalido, yo le coloque = y paso pero ahora dice que el campo gt no existe en la tabla. 2) La tabla y el sp se crear en cada BD a analizar, en la master u otra?

    Respuesta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

WP to LinkedIn Auto Publish Powered By : XYZScripts.com