Todo administrador de base de datos debe conocer la importancia de tempdb en el funcionamiento de SQL Server y debe disponer de las herramientas necesarias para monitorizarla y realizar un diagnóstico apropiado en situaciones dónde ésta se vea afectada.
¿Qué es tempdb?
Cada vez que instalamos SQL Server, por defecto, se instalan las bases de datos de sistema (master, tempdb, model y msdb), las cuales son esenciales para el correcto funcionamiento del motor de bases de datos.
Una de las bases de datos más importante en SQL Server es tempdb, la cual sirve como una herramienta de trabajo temporal para los usuarios que se conectan a SQL Server en cuestiones como objetos temporales (tablas, índices, tablas, variables, o cursores por nombrar algunos). También contiene objetos internos que se necesitan para utilizar algunos operadores de consultas, como ordenaciones, cursores, operadores hash, etc. De esta manera podríamos afirmar que, cuando ejecutamos una consulta en nuestro SQL Server, ésta es muy probable que haga uso de tempdb.
¿Qué problemas afectan a tempdb y cómo podemos debemos proceder?
Como comentábamos anteriormente, el nivel de criticidad de esta base de datos exige que dispongamos de un sistema que la esté monitorizando constantemente y que nos alerte de cualquier anomalía en su funcionamiento, además de disponer de herramientas especializadas para su correcto análisis.
Entre los problemas más recurrentes nos podremos encontrar con que los archivos de datos han llegado a su límite de crecimiento, ya sea porque no se les permite crecer más o porque se ha llenado del disco que los contiene. En un caso como éste, nos encontraríamos con un mensaje indicando que no se pueden insertar datos en tempdb debido que su Filegroup está lleno (Could not allocate space for object “<temporary system object: 2666378339965272064>” in database “tempdb” because the “PRIMARY” filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup).
Otro problema bastante frecuente es el crecimiento del log de transacciones de tempdb debido a una transacción abierta, la cual se está ejecutando sobre tempdb y no permite que el log se vacíe.
Desde SolidQ disponemos de estos métodos y herramientas para la correcta monitorización y diagnóstico de incidencias relacionadas con tempdb y, como veremos a continuación, una de estas herramientas es Power BI.
¿Necesitas ampliar tus conocimientos en Power BI para impulsar tu proyecto?
Tanto si eres usuario de negocio sin experiencia y quieres dar tus primeros pasos en el Business Intelligence como si eres experto y quieres profundizar en tus conocimientos, tenemos algún curso para ti. Comprueba nuestro catálogo de formación en Power BI aquí.
Voy a echar un vistazoPower BI como herramienta de análisis
Power BI es una herramienta de análisis empresarial que nos permite unir datos de diferentes fuentes, llevar a cabo el análisis de éstos y presentar este análisis a través de gráficas y paneles. Entre sus principales características encontramos:
- Nos permite importar datos desde varios orígenes y modificarlos a voluntad.
• Nos proporciona una manera sencilla de cruzar datos, hacer cálculos o realizar gráficas personalizadas.
• Nos permite trabajar con los datos de origen las veces que sean necesarias, por lo que la información estará actualizada.
• Podemos interactuar con las tablas y gráficas, filtrando valores o métricas para poder visualizar la información de manera personalizada. - Para descargar Power BI Desktop, solamente tendremos que acceder a la dirección https://powerbi.microsoft.com/es-es/downloads/ y en unos pocos pasos tendremos nuestra aplicación lista para trabajar con ella.
Como hemos comentado anteriormente, la base de datos del servicio SolidQ Flex contiene los datos relativos al uso de tempdb sobre las instancias de los entornos a monitorizar. Estos datos se pueden consultar de manera sencilla por medio de una consulta prediseñada por nuestro equipo (los operadores pueden acceder a la última versión de ésta en nuestro repositorio), sobre la cual solamente tendremos que indicar el nombre del servidor y de la instancia en cuestión y el intervalo de tiempo que nos interesa analizar. También los clientes suelen acceder a estas bases de datos, por lo que sirva este artículo también como ejemplo de utilización de los objetos internos de las BBDDs de SolidQ Flex.
El procedimiento es bastante sencillo. Para empezar, copiamos el código de la consulta a una ruta local y editamos los parámetros @hName, @iName, @StartDate y @EndDate, lo cuales hacen referencia al nombre del servidor, nombre de instancia, hora de inicio y hora de finalización, respectivamente. Desde este link podremos acceder al código completo.
Una vez tenemos la consulta lista, la ejecutamos sobre la instancia de SolidQ Flex en el entorno del cliente y guardamos los datos en un archivo con extensión .txt. El resultado se verá como en la siguiente captura.
Los siguientes pasos consistirán en importar y analizar estos datos en la plantilla de nuestro Power BI. Para ello accederemos a la plantilla llamada “SolidQ_TempDB_Hunter_E-DBA_V1.4.pbit” e indicaremos el nombre del archivo a importar y la ruta dónde está ubicado.
En la siguiente captura podemos ver el resultado final con los datos ya importados y la gráfica generada a partir de éstos. Estos datos fueron capturados a partir de un caso real, en el cual tempdb alcanzó unos 81 GB debido a una transacción abierta.
- A modo explicativo, pasamos a indicar cada una de las partes de nuestra gráfica:
En esta parte de la gráfica, podemos ver intervalos de crecimiento de tempdb, la cual, entre las 8 AM y las 9 AM tempdb, pasó de ocupar 44 GB a 81 GB. - En la parte superior podemos ver los distintos Login que han hecho uso de tempdb, diferenciados por colores.
- La lista de procesos ejecutados se puede ver justo debajo de la gráfica. En este apartado, daremos importancia a las columnas “Max of MBTotal”, “Login_Name” y “Query_text”.
- También disponemos de una serie de filtros con los cuales podemos seleccionar la hora, TranSeqNum, Login_name, HostName e InstanceName.
- En las pestañas de la parte inferior, podemos cambiar las métricas de la gráfica: por Login, la cual nos enseña el consumo de tempdb realizado por los distintos usuarios; por Sesión, el cual es igual al anterior, pero diferenciando por el consumo realizado por cada proceso; y el llamado TempDB_Hunter, el cual nos indica el consumo diferenciando entre procesos de usuarios y de sistema.
Por Login:
Por ID de sesión:
TempDB Hunter
6. Por último, en la parte superior izquierda, podemos ver tres iconos que hacen referencia a Reports, Data y Model. El primero es el que nos enseña la gráfica, la cual ya hemos explicado; el llamado Data nos proporciona una tabla con todos los datos recogidos desde SolidQ Flex.
El aspecto más importante de esta pestaña es nos permite acceder a la columna “full_query_text”, en la cual podemos ver el código entero de cada consulta y copiarlo para su posterior análisis.
La utilización de Power BI, sumado a otro elemento igual de importante como son las bases de datos de SolidQ Flex, supone una gran ventaja a la hora de analizar esta clase de problemas que afectan a tempdb y, en consecuencia, a nuestra instancia de SQL Server. Cabe resaltar la facilidad y rapidez con la que recopilamos y visualizamos los datos, puesto que el proceso nos supone seguir una serie pasos que podemos realizar en unos pocos minutos. Además, con toda la información recopilada podemos elaborar un informe bastante completo sobre este incidente, permitiendo al cliente ver cuál ha sido la causa del problema y llevar a cabo una toma de decisiones adecuada para evitar que vuelva a suceder.
¡Has llegado al final! Parece que te ha gustado nuestro post sobre BI
Recuerda que, tanto si eres usuario de negocio sin experiencia y quieres dar tus primeros pasos en BI como si eres experto y quieres profundizar en tus conocimientos, tenemos algún curso para ti. Comprueba nuestro catálogo de formación en Power BI aquí.
Voy a Echar un vistazo