Bojan Petrovic

Cómo poder recopilar información sobre el rendimiento y el sistema en SQL Server

May 21, 2019 by

En este artículo, vamos a ver muchas de las herramientas que podemos utilizar para monitorear SQL Server. SQL Server está repleto de muchos informes buenos que nos permiten a un DBA poder detectar rápidamente si existe algún cuello de botella en el rendimiento del SQL Server. Muchos de estos se encuentran en la parte superior de los DMV, pero nos brindan una forma visualmente interactiva de observar y trabajar con los datos. Vamos a empezar con los informes del panel de rendimiento de SQL Server.

Informes del tablero

Vamos al SQL Server Management Studio (SSMS) y lo primero es que te voy a llevar a través de los informes del panel de control listos para usar de todos los niveles. Puedes encontrarlos haciendo clic con el botón derecho en la instancia de SQL Server en el Explorador de objetos y, en el menú contextual, encontrará Informes > Informes estándar:

Todos los informes del panel de control son bastante útiles, y no los revisaremos todos, ya que esto requeriría mucho tiempo/ palabras, aunque puedes revisarlos todos cuando tengas la oportunidad. Para mostrar un ejemplo, escoge el Panel del servidor en el menú contextual. Este informe nos brinda mucha información sobre el estado actual de la instancia de SQL Server, incluida su configuración, versión, servicios y actividad:

Aquí también tenemos opciones de configuración no predeterminadas. Estos son los que se han cambiado desde la instalación de vainilla:

Adicionalmente, en el nivel de la base de datos, si hacemos clic con el botón derecho en una base de datos y accedemos a los informes, tenemos todo tipo de informes de uso de disco, eventos de copia de seguridad y restauración, principales transacciones, estadísticas de índices, etc.

Entonces, todos estos informes del panel de control son excelentes, son fáciles de consumir y trabajar con ellos.

Monitor de actividad

Ahora, vamos a ver el Monitor de actividad el cual es un monitor en tiempo real dentro de SQL Server que podemos utilizar para poder monitorear todo, desde el rendimiento hasta los costos de I/O hasta consultas más complejas, etc. Para iniciar el Monitor de actividad, haga clic con el botón derecho en la instancia de SQL Server en el Explorador de objetos y desde el menú contextual, seleccione Monitor de actividad. También puede iniciarlo desde la barra de herramientas Estándar, haciendo clic en el icono del Monitor de actividad:

El Monitor de actividad generalmente ha sido una de las herramientas de acceso si algo sale mal de repente con SQL Server. Lo primero que vemos, cuando activamos el Monitor de actividad es el panel Información general. También, esta herramienta tiene los siguientes paneles expandibles y colapsables: Esperas de recursos, I/O de archivos de datos, Consultas valiosas recientes y Consultas valiosas activas:

Procesos: nos brindan la capacidad de ver los procesos que se ejecutan actualmente para que podamos gestionarlos. Al hacer clic con el botón derecho aparece el menú contextual desde el cual se pueden finalizar, rastrear en el Analizador de SQL Server (más información sobre este tema más adelante), verlo como un plan de ejecución, y por último, pero no menos importante, los detalles de la sesión que muestra un diálogo que muestra la última T -Secuencia de comandos de SQL:

Espera de recursos – muestra información sobre las espera de recursos:

I/O del archivo de datos – muestra la información del I/O del archivo de datos actual que se produce a nivel de archivo:

Consultas valiosas recientes/activas – muestra consultas valiosas recientes/activas que utilizan muchos recursos (memoria, actividad del disco, red):

Es un excelente punto de partida para poder encontrar qué consultas están causando problemas, ocupando demasiados recursos, etc., porque una vez que se encuentran, se pueden ver como el plan de ejecución para que se puedan encontrar fácilmente los puntos calientes:

Principales DMV para el administrador

Vamos a echar un vistazo a los principales DMV que todos los administradores de BDs deberían saber. Estos son los DMV que siempre deberías tener en tu bolsillo. Para obtener una lista rápida de todos los DMO (DMV y DMF), simplemente consúltela siguiente lista:

Esto devolverá todos los DMV y DMF en SQL Server. Mire la columna de tipo y observe que “V” significa una vista y “IF” para una función:

La consulta anterior devolvió 243 DMO en un sistema. Aquí está la lista de las más útiles:

Ejecución

sys.dm_exec_connections = Conexión establecida
sys.dm_exec_sessions = Sesiones autenticadas
sys.dm_exec_requests = Solicitudes actuales

Ejecución (consulta relacionada)

sys.dm_exec_cached_plans = Planes de ejecución en caché
sys.dm_exec_query_plan = Mostrar plan para un plan_handle dado en caché
sys.dm_exec_query_stats = Estadísticas de rendimiento de consultas
sys.dm_exec_sql_text = Texto SQL dado un sql_handle

Índice

sys.dm_db_index_physical_stats = Tamaño del índice y fragmentación
sys.dm_db_index_usage_stats = Uso del índice a través del optimizador de consultas
sys.dm_db_missing_index_details = Descubra los índices faltantes

OS

sys.dm_os_performance_counters = Lista de todos los contadores y valores de rendimiento de SQL Server
sys.dm_os_schedulers = Detectar la presión de la CPU
sys.dm_os_waiting_tasks = Tareas en espera de recursos
sys.dm_os_wait_stats = Todos los tipos de espera y estadísticas

I/O

sys.dm_io_virtual_file_stats = Estadísticas de E / S para datos y archivos de registro
sys.dm_io_pending_io_requests = Solicitudes de E / S pendientes

CLR

sys.dm_clr_loaded_assemblies = Ensamblados cargados
sys.dm_clr_tasks = Tareas relacionadas con CLR

Los libros en línea (docs.microsoft.com) tienen una gran cantidad de información general para todos los DMO. Siéntase libre de copiar cualquier nombre de la cuadrícula de resultados, péguelo en el navegador y búsquelo. Lo más factible es que el primer artículo en la parte superior sea de MS docs que muestre la descripción general y el uso de T-SQL.

Analizador de SQL Server

Al final, vamos a echar un vistazo al Analizador de SQL Server para crear y reproducir un trazo. Eso es extremadamente útil lograr solucionar los problemas, ya sea desde una aplicación o internamente dentro de la base de datos. Crear un trazo nos permite poder capturar una carga de trabajo. Y si esa carga de trabajo es la que causa problemas que tener la capacidad de reproducir ese problema, será mucho más fácil verificar si realmente lo solucionamos al resolver el problema.

Desafortunadamente, Microsoft anunció que se dejará el SQL Server Profiler, pero esta característica aún está disponible en SQL Server 2016 y será eliminada en futuras versiones.

Entonces, vamos a pasar al Analizador de SQL Server y ver cómo funciona. Para iniciar el Analizador de SQL Server, presione el ícono de Inicio de Windows o presione la tecla de Windows e ingrese “Analizador de SQL Server 17”:

Recuerde, el Analizador de SQL Server también puede ser inicializado desde el Monitor de actividad, simplemente haga clic en el panel Procesos, haga clic con el botón derecho en el proceso que desea perfilar y, a continuación, en el menú contextual, haga clic con el botón derecho del ratón y elija la opción Proceso de seguimiento en el Analizador de SQL Server.

Por lo tanto, una vez que esto se encienda, haga clic en el primer botón que dice “Nuevo rastreo”. Esto abrirá el diálogo de conexión a su instancia:

Una vez que este establecida la conexión con la instancia que desea crear un perfil y crear trazas, aparecerá la ventana Propiedades de la traza. Hay que Asignar un nombre a la traza en el cuadro Nombre de la traza. Y como queremos reproducir esta traza, seleccione una plantilla de traza incorporada, pero hay un par de requisitos con las repeticiones, es necesario capturar ciertos eventos y campos, y la manera más sencilla de hacerlo es elegir la plantilla TSQL_Replay en la pestaña Uso de lista de plantillas:

Mientras tanto, guarde esto como un archivo marcando la opción Guardar en archivo y luego cambie la pestaña a la sección Eventos. Desde el momento que elegimos una plantilla, va a preseleccionar una gran cantidad de eventos. Desde aquí, puede jugar con las opciones, mostrar todos los eventos/columnas, agregar/eliminar ciertos eventos, etc.

En este caso, hagamos clic en el botón Filtros de columna para establecer un filtro en un nombre de base de datos. Solo queremos atrapar eventos que afecten a la base de datos AdventureWorks2014. Esta es una excelente manera de eliminar todo el ruido adicional que se producirá en un escenario del mundo real:

Una vez configurado que todo esto, haga clic en Aceptar en el cuadro de diálogo Editar filtro para guardar la configuración y cerrarla. Vuelta en las ventanas iniciales, presione el botón Ejecutar para iniciar el rastreo. Entonces, esta traza se está ejecutando ahora, monitoreando todo lo que está sucediendo en la base de datos AdventureWorks2014:

Puede cambiar a través de SSMS y también puede ejecutar algunas consultas o simplemente deje que se ejecute en segundo plano por un tiempo. Se capturarán varios eventos, incluso si ninguna consulta del usuario llega a la base de datos:

Después de un tiempo, detenga la traza haciendo clic en el botón rojo de parar:

Ahora que hemos capturado todo el archivo guardado anteriormente, por ejemplo, ahora podemos ejecutar esta reproducción en una instancia diferente. ¿Por qué? Debido a que puede ser extremadamente útil cuando tienes un problema en la producción. Es muy poco probable que se puedan solucionar problemas importantes directamente en un servidor de producción. En este escenario de caso de uso, el mejor enfoque que podemos dar sería copiar la producción para probar, tratar de realizar el seguimiento que se capturó en la producción, y luego podemos hacer lo que queramos en esa base de datos de prueba en términos de solución de problemas y arreglo del problema.

Para hacer esto, abra la traza en el Analizador de SQL Server:

Ahora, ve a Repetición y elige comenzar:

Esto, una vez más, va a mostrar el diálogo de conexión de SQL Server a su instancia:

Lo que luego nos va a llevar a la ventana Configuración de reproducción, en la que podemos cambiar el servidor de reproducción si es necesario para el propósito mencionado anteriormente. Es muy sencillo desde este punto. Simplemente pulsa OK para volver a reproducir la traza:

La primera fila siempre contendrá todo el evento de configuración de reproducción. Entonces, en cualquier momento que haya un evento, se activará ese evento. El conjunto de resultados solo indicará que se ha realizado:

Si nos desplazamos hacia la derecha, cualquier conjunto de resultados obtendrá la duración medida del generador de perfiles: cuánto tiempo llevó la ejecución de un evento:

Al final, podrá encontrar el Evento de estadísticas de reproducción que muestra el total de eventos, los errores internos/de proveedor que se produjeron, las estadísticas de proporción de aciertos y el tiempo total de reproducción:

Nuevamente, esto es muy bueno para los escenarios cuando hay un problema en SQL Server y se desea recrear el problema. En primer lugar, hay que capturar el problema que luego nos dará el flujo de trabajo dentro de una traza que podemos hacer lo que sea necesario en SQL Server para logar arreglar y solucionar el problema y finalmente, podemos volver a reproducir esa traza, reproducirla para ver si lo han arreglado con éxito.

Bojan Petrovic
Monitoreo, Performance, Reportes

Acerca de Bojan Petrovic

Bojan aka “Boksi”, an AP graduate in IT Technology focused on Networks and electronic technology from the Copenhagen School of Design and Technology, is a software analyst with experience in quality assurance, software support, product evangelism, and user engagement. He has written extensively on both the SQL Shack and the ApexSQL Solution Center, on topics ranging from client technologies like 4K resolution and theming, error handling to index strategies, and performance monitoring. Bojan works at ApexSQL in Nis, Serbia as an integral part of the team focusing on designing, developing, and testing the next generation of database tools including MySQL and SQL Server, and both stand-alone tools and integrations into Visual Studio, SSMS, and VSCode. View all posts by Bojan Petrovic

168 Views