Monitoreo de la efectividad de MS SQL Server. Recomendaciones prácticas

Además de usar Query Analyzer para encontrar declaraciones T-SQL ineficientes, también puede usar la utilidad Analizador de SQL Server. Profiler le permite monitorear todas las declaraciones T-SQL que se ejecutan en el sistema, con una visualización gráfica de información sobre estas declaraciones. Profiler también proporciona capacidades de clasificación y filtrado que puede usar para identificar las declaraciones de T-SQL que usan la mayoría de los recursos de CPU y E/S. Con esta información, puede determinar qué declaraciones T-SQL priorizar al ajustarlas. Las declaraciones T-SQL que se llaman desde la aplicación se pueden ver en Profiler; no necesita acceso al código fuente de la aplicación en sí.

La utilidad Profiler de SQL Server 2000 funciona de manera similar a la utilidad Profiler de SQL Server 7, pero con algunas mejoras. Una adición útil es la plantilla de seguimiento, que se puede utilizar para crear archivos de seguimiento. (Todavía se debe crear un seguimiento antes de que pueda usarlo para monitorear las operaciones de SQL Server). En SQL Server, los seguimientos tenían que crearse manualmente.

Siga estos pasos para invocar la utilidad Profiler y comenzar a rastrear.

  1. Haga clic en el botón Inicio, señale Programas, señale Microsoft SQL Server y luego elija Profiler. Cuando abra por primera vez la ventana Profiler, estará vacía. No se abrirán paneles ni se crearán perfiles en SQL Server.
  2. Para comenzar a generar perfiles, debe seleccionar una plantilla de seguimiento existente para ejecutar o crear una nueva plantilla de seguimiento para ejecutar. (El proceso de inicio se describe en el paso 4). SQL Server 2000 Profiler ofrece una opción de línea completa plantillas de seguimiento. El uso de estas plantillas de seguimiento puede ahorrarle mucho tiempo porque no tiene que crear un seguimiento desde el principio. Para ver una lista de plantillas de seguimiento, haga clic en el menú Archivo (Archivo), especifique el comando Abrir (Abrir) y seleccione el elemento Plantillas de seguimiento (Plantillas de seguimiento) para mostrar el cuadro de diálogo Abrir (Fig. 35.16).


    Arroz. 35.16.

    Las siguientes plantillas de seguimiento se proporcionan con SQL Server.
    • SQLServerProfilerSP_Counts.tdf. Cuenta el número de procedimientos almacenados en ejecución. Los resultados se agrupan por nombre de procedimiento almacenado y contienen el número de veces que se ejecutó el procedimiento correspondiente.
    • SQLServerProfilerStandard.tdf. colecciona información general sobre las conexiones procedimientos almacenados ejecutados y paquetes SQL en el orden en que se ejecutan.
    • SQLServerProfilerTSQL.tdf. Recopila información sobre todas las declaraciones de T-SQL en el orden en que llegan a SQL Server desde los usuarios. Este seguimiento simplemente contiene instrucciones T-SQL y las horas en que se ejecutaron.
    • SQLServerProfilerTSQL_Duration.tdf. Imprime las declaraciones T-SQL que se ejecutaron, así como el tiempo (en milisegundos) que se tardó en ejecutar esas declaraciones.
    • SQLServerProfilerTSQL_Grouped.tdf. Recopila datos similares a los que recopila SQLServerProfilerTSQL, pero agrupa declaraciones del usuario que las ejecutó.
    • SQLServerProfilerTSQL_Replay.tdf. Proporciona información detallada sobre las instrucciones T-SQL que se ejecutaron. Este seguimiento contiene datos que se pueden usar para reproducir instrucciones T-SQL en el Analizador de consultas.
    • SQLServerProfilerTSQL_SPs.tdf. Imprime los procedimientos almacenados especificados, así como los comandos T-SQL dentro de esos procedimientos. Los resultados se muestran en el orden en que se realizaron.
    • SQLServerProfilerTuning.tdf. Recopila datos sobre un procedimiento almacenado y la ejecución de un paquete SQL.
    Estas plantillas de rastreo pueden ser muy útiles. Por ejemplo, la plantilla de seguimiento SQLServerProfilerTSQL_Duration puede ayudarlo a identificar las instrucciones T-SQL que tardan más tiempo en ejecutarse. Esta información puede servir como punto de partida para optimización de consultas. El operador puede tardar mucho porque está haciendo mucho trabajo, o quizás porque es ineficiente. Como verá en el siguiente paso, debe utilizar una plantilla predefinida para cualquier seguimiento.
  3. Para comenzar a rastrear, haga clic en Archivo, señale Nuevo y luego seleccione Rastrear. Aparecerá el cuadro de diálogo Conectar a SQL Server (Figura 35-17). En este cuadro de diálogo, seleccione el sistema SQL Server para rastrear y luego haga clic en el botón Aceptar.


    Arroz. 35.17.
  4. Aparecerá la ventana Trace Properties (Figura 35.18). En la pestaña General, puede ingresar un nombre para el seguimiento (campo Nombre del seguimiento) y seleccionar una plantilla de seguimiento para usar como punto de partida. Para este ejemplo, seleccione la plantilla SQLServerProfilerTSQLDuration. En la parte inferior de la pestaña, puede especificar dónde desea guardar el seguimiento: en un archivo (Guardar en archivo) y/o en una tabla de SQL Server (Guardar en tabla). Si no se establece ninguno de estos indicadores, los resultados del seguimiento se mostrarán solo en la pantalla. Además, puede establecer la hora de finalización del seguimiento (casilla de verificación y campo Habilitar hora de finalización del seguimiento). Esto puede ser muy útil para seguimientos a largo plazo.


    Arroz. 35.18.
  5. A continuación, haga clic en la pestaña Eventos (Events) (Fig. 35.19).


    Arroz. 35.19. En esta pestaña, puede seleccionar uno o más eventos que se rastrearán en este seguimiento. Puede realizar un seguimiento de una variedad de clases (categorías) de eventos y eventos específicos. El cuadro de lista Clases de eventos disponibles contiene clases de eventos como cursores, errores y advertencias, bloqueos, objetos, exploraciones, operadores SQL SQL), procedimientos almacenados, transacciones y TSQL.
  6. Después de seleccionar los eventos que desea rastrear, haga clic en la pestaña Columnas de datos (Figura 35.20). En esta pestaña, especifique qué datos se recopilarán durante este rastreo. Estos datos pueden incluir la hora de finalización,

¿Qué aprenderás de este artículo?

  • Finalidad de la herramienta de seguimiento SQL Profiler
  • Cómo rastrear el texto de la solicitud al DBMS al que se traduce la solicitud 1C
  • Configuración del filtro de seguimiento
  • Cómo personalizar el analizador de SQL

A menudo, surge una situación en el trabajo cuando una solicitud en 1C por alguna razón funciona lentamente, pero el análisis del texto de la solicitud no nos informa sobre ningún problema.

En este caso, debe estudiar este problema en un nivel inferior. Para hacer esto, debemos mirar el texto de la consulta SQL y el plan de consulta. Puede usar SQL Profiler para esto.

SQL Profiler - Propósito

SQL Profiler es un programa incluido en MS SQL Server, que está diseñado para ver todos los eventos que ocurren en el servidor SQL. En otras palabras, es necesario registrar la traza.

¿En qué casos puede ser útil esta herramienta para un programador 1C? En primer lugar, puede obtener el texto de la consulta en SQL y ver su plan. Esto también se puede hacer en el diario de tecnología (TL), pero el plan de consulta en el TL no es tan conveniente y requiere algunas habilidades y destrezas. Además, en el generador de perfiles puede ver no solo texto, sino también plano grafico ejecución de consultas, que es más conveniente.

El generador de perfiles también le permite averiguar:

  • solicitudes más largas que un cierto tiempo
  • consultas contra una tabla específica
  • esperando en bloques
  • tiempos de espera
  • interbloqueos, etc

Análisis de consultas con SQL Profiler

A menudo, Profiler se usa específicamente para el análisis de consultas. Y al mismo tiempo, es necesario analizar no todas las consultas ejecutables, sino cómo una determinada consulta en el lenguaje 1C se traduce a SQL y prestar atención a su plan de ejecución.

En particular, puede ser necesario comprender por qué la consulta se ejecuta lentamente. O, al crear una consulta grande y compleja, debe asegurarse de que la consulta SQL no contenga uniones de subconsulta.

Para rastrear una solicitud en un seguimiento, siga estos pasos:

1. Ejecute el Analizador de SQL: Inicio - Todos los programas - Microsoft SQL Server 2008 R2 - Herramientas de rendimiento - SQLProfiler.

2. Cree una nueva traza: Archivo - Crear seguimiento(Ctrl + N).

3. Especifique el servidor DBMS donde se encuentra nuestra base de datos y haga clic en Conectar:

Nada nos impide rastrear el servidor DBMS ubicado en cualquier otra computadora.

4. En la ventana que aparece Propiedades de rastreo cambiar a marcador Selección de eventos:

Dado que necesitamos consultas y planes de consulta, debemos habilitar los eventos apropiados. Para mostrar lista completa las propiedades y los eventos incluyen banderas Mostrar todos los eventos y Mostrar todas las columnas. Ahora debe seleccionar solo los eventos que se muestran en la figura a continuación, mientras que el resto debe estar deshabilitado:

Descripción de estos eventos:

  • ShowplanStatisticsProfile: plan de ejecución de consulta de texto
  • ShowplanXMLStatisticsProfile: plan de ejecución de consulta gráfica
  • RPC: Completado: texto de solicitud, si se ejecuta como un procedimiento (si se ejecuta una solicitud 1C con parámetros)
  • SQL: BatchCompleted: texto de consulta si se ejecuta como una consulta normal (si se ejecutó una consulta 1C sin parámetros)

6. En esta etapa, debe configurar un filtro para los eventos seleccionados. Si el filtro no está configurado, veremos consultas para todas las bases de datos ubicadas en este servidor DBMS. Haga clic en el botón Filtros de columna para establecer el filtro por nombre de base de datos:

Ahora vemos en el seguimiento solo solicitudes a la base de datos "TestBase_8_2".

También puedes poner un filtro en otros campos, los más interesantes de ellos:

  • Duración (duración)
  • TextData (generalmente el texto de la solicitud)
  • RowCounts (número de filas devueltas por la consulta)

Supongamos que necesitamos "atrapar" todas las solicitudes a la tabla "_InfoRg4312" que duran más de 3 segundos en la base de datos "TestBase_8_2". Para esto necesitas:

a) Establecer filtro por base de datos (ver arriba)
b) Establecer filtro por duración (establecido en milisegundos):

c) Establecer filtro por texto de solicitud:

Para establecer un filtro por el texto de la solicitud, utilice una máscara. Si necesita realizar un seguimiento de las consultas que acceden a varias tablas, se crean varios elementos en la sección Apariencia. Las condiciones de filtro aplicadas funcionan juntas.

7. Ahora empezamos a trazar usando el botón Correr en la ventana Propiedades de rastreo y observar los eventos que caen dentro de los filtros establecidos, cuya visualización se ha configurado.

Los botones de la barra de comandos se utilizan para controlar el seguimiento:

Asignación de botones:

  • Borrador- borra la ventana de rastreo
  • Comienzo- comienza a rastrear
  • Pausa– detiene el rastreo, cuando hace clic en Iniciar, el rastreo se reanuda
  • Detener- deja de rastrear

8. La ventana de seguimiento consta de dos partes. La parte superior contiene eventos y sus propiedades, la parte inferior contiene información según el tipo de eventos. Para nuestro ejemplo, aquí se mostrará el texto de la solicitud o su plan.

9. Ejecute la consulta en la consola de consultas 1C y vea cómo se reflejará en el generador de perfiles:

El comportamiento de seguimiento muestra que al final hubo varias solicitudes, y solo una de ellas nos interesa. El resto de las solicitudes son solicitudes de servicio.

10. Las propiedades de los eventos permiten evaluar:

  • cuántos segundos se ejecutó la solicitud (Duración)
  • cuantas lecturas logicas (Reads)
  • cuántas filas devolvió la consulta como resultado (RowCounts), etc.

En nuestro caso, la consulta tardó 2 milisegundos, realizó 4 lecturas lógicas y devolvió 1 fila.

11. Si observa un evento anterior, puede ver el plan de consulta gráficamente:

Se puede ver en el plan que la búsqueda se realiza por índice por precio, este plan no se puede llamar ideal, ya que el índice no cubre, los campos de código y nombre se obtienen usando KeyLookup, que toma el 50% del tiempo.

Usando el menú contextual, el plan de consulta gráfico resultante se puede guardar en un archivo separado con la extensión *.SQLPlan y abrirlo en un generador de perfiles en otra computadora o usando el programa SQL Sentry Plan Explorer, que es más avanzado.

12. Si subimos aún más, veremos el mismo plan de consulta, pero en forma de texto. Es este plan el que se muestra en los controles de rendimiento TJ, TsUP y otros 1C.

  • Al formato del propio generador de perfiles, es decir, con extensión *.trc
  • a formato xml
  • Hacer plantilla a partir de calco (Ver siguiente punto)
  • Guarde la traza resultante como una tabla de base de datos. Esta es una forma muy conveniente cuando, por ejemplo, necesita encontrar la solicitud más lenta en el rastreo o filtrar solicitudes por algún parámetro.

Luego seleccionamos la base de datos en el servidor especificado, especificamos el nombre de la tabla donde se guardará el seguimiento. Puede usar una tabla existente o darle un nuevo nombre, y luego esta tabla se creará automáticamente.

Ahora es posible crear consultas de cualquier complejidad en nuestra tabla: por ejemplo, para buscar las consultas de mayor duración.

También debe recordar que la duración se almacena en la tabla en millonésimas de segundo y, al mostrar el resultado, debe convertir el valor a milisegundos. La tabla también tiene una columna RowNumber que muestra el número de la fila dada en el seguimiento.

14. Si utiliza con frecuencia el generador de perfiles para analizar solicitudes, configurar constantemente los eventos y filtros necesarios le llevará mucho tiempo.

En este caso, las plantillas de seguimiento nos ayudarán, donde configuramos los filtros que necesitamos y el orden de las columnas, y luego simplemente usamos la plantilla existente al crear un nuevo seguimiento.

Para crear una plantilla, utilice el menú Archivo - Plantillas - Nueva plantilla:

En la primera pestaña, especifique el tipo de servidor, el nombre de la plantilla y, si es necesario, establezca un indicador para usar esta plantilla de forma predeterminada.

En la segunda pestaña, seleccionamos los eventos necesarios y configuramos filtros (como se muestra arriba).

Al crear un nuevo seguimiento, podemos especificar la plantilla deseada y luego, en la segunda pestaña, todos los filtros y eventos se completarán automáticamente de acuerdo con la plantilla creada.

andrey burmistrov

Hoy mediremos el rendimiento de nuestra aplicación utilizando Herramienta de creación de perfiles de Visual Studio.

Herramienta de creación de perfiles de Visual Studio permite a los desarrolladores medir, evaluar el rendimiento de la aplicación y el código. Estas herramientas están completamente integradas en el IDE para brindarle al desarrollador un control ininterrumpido.
En este tutorial, perfilaremos la aplicación paso a paso. GenteTrax utilizando Muestreo y Instrumentación técnicas de creación de perfiles para identificar problemas en el rendimiento de las aplicaciones.

Muchas fotos.

Capacitación

Para completar esta guía, necesitará:
  • Microsoft Visual Studio 2010
  • Conocimiento intermedio de C#
  • Una copia de la aplicación de prueba PeopleTrax, descargable desde la Galería de códigos de MSDN

Métodos de creación de perfiles

Desviémonos un poco del tema principal del artículo y consideremos posibles métodos de generación de perfiles. Este capítulo se puede omitir, los métodos de creación de perfiles utilizados se describirán brevemente antes de su uso.
Muestreo
Muestreo— recopila datos estadísticos sobre el funcionamiento de la aplicación (durante la creación de perfiles). Este método es liviano y por lo tanto, como resultado de su trabajo, hay un error muy pequeño en los datos obtenidos.

Cada cierto intervalo de tiempo se recopila información sobre la pila de llamadas (call stack). Sobre la base de estos datos, se calcula el rendimiento. Se utiliza para el perfilado inicial y para identificar problemas relacionados con el uso de la CPU.

Instrumentación
Instrumentación- recopila información detallada sobre el tiempo de ejecución de cada función llamada. Se utiliza para medir el rendimiento de las operaciones de E/S.

El método inyecta su código en un archivo binario que captura información de sincronización (tiempo) para cada función en el archivo y para cada función que se llama en ese.

El informe contiene 4 valores para proporcionar el tiempo transcurrido:

  • Transcurrido Inclusivo- el tiempo total dedicado a la ejecución de la función
  • Aplicación Inclusiva- el tiempo dedicado a la ejecución de la función, excluyendo el tiempo de las llamadas al sistema operativo.
  • Exclusivo transcurrido- el tiempo empleado en ejecutar el código en el cuerpo. El tiempo empleado por las funciones llamadas por la función de destino.
  • Exclusivo de la aplicación- el tiempo empleado en ejecutar el código en el cuerpo. Se excluyen el tiempo dedicado a realizar llamadas al sistema operativo y el tiempo dedicado a ejecutar funciones llamadas por la función de destino.
concurrencia
concurrencia– recopila información sobre aplicaciones de subprocesos múltiples (cómo depurar aplicaciones de subprocesos múltiples, consulte la "Guía para depurar aplicaciones de subprocesos múltiples en Visual Studio 2010"). El método recopila información detallada sobre la pila de llamadas cada vez que los subprocesos de la competencia se ven obligados a esperar para acceder a un recurso.
Memoria .NET
Memoria .NET- El generador de perfiles recopila información sobre el tipo, el tamaño y la cantidad de objetos que se crearon en la asignación o que el recolector de elementos no utilizados destruyó. La creación de perfiles de memoria tiene poco o ningún efecto en el rendimiento general de la aplicación.
Interacción de niveles
Interacción de niveles- agrega información al archivo de perfiles sobre llamadas síncronas ADO.NET entre página ASP.NET u otras aplicaciones y sql servidor. Los datos incluyen el número y tiempo de las llamadas, así como los tiempos máximo y mínimo.

Esto concluye la revisión de los métodos de creación de perfiles y continuará aprendiendo cómo crear perfiles de aplicaciones.

Perfilado por el método de muestreo

El muestreo es una técnica de creación de perfiles que sondea periódicamente el proceso en cuestión para determinar la función activa. El resultado muestra la cantidad de veces que la función estuvo al comienzo de la pila de llamadas durante la prueba.
perfilado
Abrir un proyecto de prueba GenteTrax. Establezca la configuración en Liberar(La versión de depuración incorpora información adicional para depurar la aplicación y tendrá un efecto negativo en la precisión de los resultados de la generación de perfiles).

En el menú Analizar haga clic en Iniciar asistente de rendimiento.

En este paso, debe elegir un método de creación de perfiles. Seleccione Muestreo de CPU (recomendado) y haga clic en Siguiente.

Elegimos qué aplicación perfilaremos, esta GenteTrax y el botón Siguiente. A continuación, haga clic en Finalizar y el generador de perfiles y nuestra aplicación se iniciarán automáticamente. En la pantalla vemos el programa PeopleTrax. Presionamos el botón Obtener gente, a la espera de la finalización de la obra y exportar datos. Cerramos el bloc de notas y el programa y el generador de perfiles generarán un informe.

Informe generado por Profiler (*.vsp)

Informe de análisis del método de muestreo
V Resumen muestra un gráfico del uso de la CPU durante todo el tiempo de generación de perfiles. Lista Ruta caliente muestra las ramas de llamadas que mostraron mayor actividad. Y en la lista Funciones que realizan la mayor parte del trabajo individual(cuyo nombre habla por sí solo) - funciones que ocupaba b O Mayor tiempo de proceso en el cuerpo de estas funciones.

mirando la lista Ruta caliente vemos que el método PeopleNS.Personas.GetNames ocupa casi el último lugar en la rama de llamadas. Luego se puede estudiar más de cerca para mejorar el rendimiento. Haga clic en PeopleNS.Personas.GetNames y se abre ante nosotros Detalles de la función.

Esta ventana contiene dos partes. La ventana de gastos proporciona una representación gráfica de cómo funcionan las funciones y la contribución de la función y sus llamadores al número de instancias que se han seleccionado. Puede cambiar la función en cuestión haciendo clic en ella con el mouse.

Vista de código de función muestra el código del método cuando está disponible y resalta las líneas más caras del método seleccionado. Cuando se elige el método ObtenerNombres se puede ver que lee líneas de los recursos de la aplicación usando Lector de cadenas, añadiendo cada línea a Lista de arreglo. No hay formas obvias de mejorar esta parte.

Porque PersonasNS.Personas.GetPersonas el único que llama ObtenerNombres- imprenta Obtener gente. Este método devuelve Lista de arreglo objetos PersonInformationNS.PersonInformation con los nombres de personas y empresas devueltas por el método ObtenerNombres. Sin embargo, ObtenerNombres llamado dos veces cada vez que se crea PersonaInformación. (Esto se muestra resaltado en amarillo y rojo). Obviamente, uno puede optimizar fácilmente el método creando listas solo una vez al comienzo del método.

Versión alternativa Obtener gente también está en el código y lo activaremos ahora. Para ello, debe definir OPTIMIZADO_CONSEGUIR PERSONAS como símbolo de compilación condicional en la ventana de propiedades del proyecto Personas y GenteTrax. Y sí, si desea repetir mis experimentos, debe corregir el error en el proyecto. El constructor de clases optimizado escribió mal el nombre de los recursos: necesita PeopleNS.Resources en lugar de PeopleNS.Resource. Si esto no se cambia, todo se derrumba con terribles errores.

El método optimizado reemplazará al anterior en la próxima compilación.

Reinicie la creación de perfiles en la sesión actual haciendo clic en Lanzamiento con perfilado en la ventana explorador de rendimiento. Haga clic en Obtener gente y exportar datos. Cerramos el bloc de notas y el programa y el generador de perfiles generarán un nuevo informe.

Para comparar dos informes, seleccione ambos y RMB Comparar informes de rendimiento. La columna delta muestra la diferencia en el rendimiento de la versión Base de más tarde Comparación. Escoger % de muestras inclusivas y aplicar

Como puede ver, la ganancia de rendimiento es visible a simple vista.

Perfilado con instrumentación

Este método es útil para perfilar operaciones de E/S, escribir en disco y comunicarse a través de una red. Este método proporciona más información que el anterior, pero conlleva más gastos generales. Los archivos binarios obtenidos después de insertar código adicional son más grandes de lo habitual y no están destinados a la implementación.

Esta vez centraremos nuestro análisis en la exportación de datos, en la que se escribe una lista de personas en un archivo de bloc de notas.

perfilado
V explorador de rendimiento escoger Instrumentación y haga clic en Iniciar creación de perfiles. Haz clic en Obtener personas. Después de cargar personas, espere 10 segundos y haga clic en Exportar datos. Cierra el bloc de notas y el programa. El generador de perfiles generará un informe.
Análisis
El generador de perfiles mostrará esta imagen:

No obtuvimos la información que queríamos. Filtremos los datos. Deliberadamente esperamos 10 segundos solo para filtrar los datos de perfiles que no necesitamos en este momento. Marcamos desde el día 13 hasta el final y presionamos Filtrar por selección. Otro resultado:

Ruta caliente muestra que el método concat toma mucho tiempo (también es el primero en la lista Funciones con la mayoría del trabajo individual). Haga clic en concat para ver información detallada sobre el método.

Está claro que PeopleTrax.Form1.ExportData es el único método que llama concat. Hacer clic PeopleTrax.Form1.ExportData en los métodos de llamada ( Función que llama a esta función).

Analizamos el método en la ventana de código. Tenga en cuenta que no hay una llamada directa a Concat. En cambio, existe el uso del operando += , que el compilador reemplaza con métodos System.String.Concat. Como casi todos saben, cualquier cambio en las cadenas en .NET destruirá la versión anterior de la cadena y creará una cadena modificada. Afortunadamente, .NET tiene una clase Constructor de cadenas que está diseñado para hacer el trabajo.

El proyecto ya tiene un método optimizado usando Constructor de cadenas. En el proyecto PeopleTrax, agregue una variable de compilación OPTIMIZED_EXPORTDATA. Guardamos y ejecutamos el generador de perfiles nuevamente y comparamos los informes. Es inmediatamente claro (y lógicamente claro) que hemos optimizado las llamadas Concat (de 6000 a 0 veces).

Después de iniciar la aplicación, es visible a simple vista una mejora notable en el rendimiento. Es muy importante volver a ejecutar la creación de perfiles, incluso hay mejoras visibles. La visualización de nuevos datos después de solucionar el problema puede revelar otros problemas de rendimiento de la aplicación.

Analizador de SQL Server 2005, seguimiento de solicitudes de aplicaciones, plantillas de seguimiento, agrupación de información de solicitudes

Uno de los medios más útiles para monitorear la actividad del usuario es perfilador (perfilador). Con esta herramienta, puede averiguar qué comandos SQL Server está ejecutando actualmente. La necesidad de utilizar un perfilador surge muy a menudo. Aquí hay algunas situaciones estándar en las que puede ser muy difícil prescindir de él:

q Desea analizar la aplicación y ver qué comandos ejecuta en el servidor. Esta información puede ser útil:

· comprender con qué tablas de la base de datos trabaja esta aplicación al realizar ciertas operaciones. Muy a menudo, en una empresa, existe la necesidad de crear informes en un formato que no proporciona la aplicación, y los desarrolladores rara vez brindan información detallada sobre la estructura de la base de datos;

· para averiguar cuán óptimas en términos de rendimiento son enviadas las solicitudes al servidor por la aplicación. En la práctica, cuando se utiliza un generador de perfiles, a menudo es posible identificar consultas completamente subóptimas, por ejemplo, cuando se filtran o clasifican los datos del cliente;

· Comprender qué comando Transact -SQL de una aplicación en el servidor genera un error.

q recopilar información sobre la actividad del usuario durante un largo período de tiempo (por ejemplo, puede recopilar todas las solicitudes que una determinada aplicación envió al servidor durante la jornada laboral). La información recopilada se puede analizar manualmente o pasar al Asesor de ajuste de la base de datos para un análisis automatizado;

q para monitorear el funcionamiento del servidor en tiempo real. Por ejemplo, si el servidor se ralentiza repentinamente, en la ventana del generador de perfiles puede ver qué comandos en este momento se realizan en él.

El generador de perfiles tiene muchas características nuevas en SQL Server 2005:

q Se agregaron perfiles de eventos de Integration Services. Ahora puede usar el generador de perfiles para monitorear el progreso de los nuevos paquetes DTS;

q se hizo posible registrar las lecturas del contador del Monitor del sistema al registrar información sobre la ejecución de un comando;

q Se han agregado muchos nuevos eventos y fuentes de información al generador de perfiles que se pueden seleccionar para escribir en el archivo de rastreo. La definición de qué escribir en el archivo de seguimiento ahora se puede guardar en formato XML;

q ahora es posible guardar los resultados de la traza en formato XML (también se guarda la capacidad de escribir en los formatos ANSI, OEM, UNICODE);

q Incluso puede guardar planes de ejecución para comandos Transact -SQL capturados por el generador de perfiles en formato XML. Estos planes luego se pueden abrir en SQL Server Management Studio para un análisis más detallado;

q se hizo posible agrupar eventos directamente en la ventana del generador de perfiles. La agrupación, por ejemplo, hace que sea muy fácil contar cuántas veces se ejecutó un determinado comando Transact -SQL en el servidor durante el día.

Trabajar con el generador de perfiles parece muy simple. Esta aplicación se puede iniciar desde el menú Comienzo| Programas| Servidor Microsoft SQL 2005 | herramientas de rendimiento | Analizador de SQL Server . Para comenzar, en la ventana del generador de perfiles que se abre, en el menú Archivo(Archivo) debe ser seleccionado NuevoRastro(Nueva traza) y conéctese al servidor SQL Server 2005 que desea monitorear. La palabra "seguimiento" hace referencia a una sesión que recopila información sobre el funcionamiento de SQL Server 2005. Sin embargo, antes de comenzar a recopilar información, debe configurar los ajustes de esta sesión. Este ajuste se realiza en la ventana RastroPropiedades(Propiedades de seguimiento), que se abre automáticamente antes de iniciar una sesión de seguimiento (Fig. 11.1).

Arroz. 11.1. Configuración de las opciones de la sesión de seguimiento

en la pestaña General(General) en la lista usarelplantilla(Usar plantilla) puede elegir la plantilla más adecuada para recopilar información dentro de su sesión. En principio, no puede prestar atención a la configuración de la plantilla, sino definir manualmente los parámetros para recopilar información (usando la pestaña adyacente EventosSelección(Seleccionar eventos)). Sin embargo, especificar la plantilla correcta puede ahorrar tiempo y evitar errores. Por lo tanto, nos detendremos en las plantillas con más detalle.

Una plantilla se guarda en un archivo especial con la extensión tfd configuración de la sesión de seguimiento. El trabajo con plantillas (agregar nuevas, cambiar las existentes, importar y exportar informes a otros directorios) se realiza mediante el menú Archivo| Plantillas(Archivo| Plantillas) en SQL Server Profiler . Inicialmente, tienes ocho plantillas a tu disposición:

q Estándar (defecto)- como su nombre lo indica, esta plantilla es adecuada para la mayoría de las situaciones y, por lo tanto, se selecciona de forma predeterminada. Le permite realizar un seguimiento de todos los procedimientos almacenados y los comandos Transact -SQL que se ejecutan;

q SP_cuenta- se recopila información sobre los procedimientos almacenados y las funciones lanzadas para su ejecución. Al mismo tiempo, la información en la ventana del generador de perfiles se clasifica (en la terminología del generador de perfiles, agrupada) por los nombres de los procedimientos almacenados;

q TSQL- Recopila información sobre todos los comandos Transact -SQL que se ejecutan en el servidor. Además del código de comando, también se registra información sobre los identificadores de los procesos de usuario y la hora de inicio. Por lo general, este patrón se usa para monitorear los comandos enviados al servidor por una aplicación;

q TSQL_duración- casi lo mismo que la plantilla anterior, pero en lugar de registrar información sobre cuándo se ejecutó el comando Transact -SQL, registra el tiempo que tomó ejecutarlo. Normalmente, esta plantilla se utiliza para supervisar "manualmente" el rendimiento del servidor;

q TSQL_agrupados- además de la información sobre el código del comando Transact -SQL y la hora en que se ejecutó, se registra información sobre el nombre de la aplicación, la cuenta de usuario en el sistema operativo y el inicio de sesión del usuario que se utilizó para conectarse. Los registros se agrupan por inicio de sesión. Por lo general, este patrón se usa en situaciones en las que desea realizar un seguimiento de la actividad de una aplicación específica;

q TSQL_Repetición- Se registrará la información más detallada sobre los comandos Transact -SQL ejecutados. Luego, esta información se puede utilizar para reproducir la carga en el servidor con la máxima precisión. Por lo general, esta plantilla se usa para escribir un conjunto de comandos que luego se usarán para probar diferentes configuraciones del servidor en términos de rendimiento;

q TSQL_SP- además de registrar información sobre el inicio del lanzamiento de todo el procedimiento almacenado (evento SP: Comenzando), esta opción de seguimiento también registra información sobre la ejecución de cada comando de este procedimiento almacenado (evento SP: StmtIniciando). Este patrón se suele utilizar para supervisar el funcionamiento de procedimientos almacenados complejos;

q Afinación- Esta plantilla es para registrar la información más adecuada para la transmisión del Asesor de ajuste de la base de datos. Acerca de cómo trabajar con esta herramienta para el análisis automatizado y la optimización del rendimiento se describirá en segundo. 11.5.5.

Como ya se mencionó, no es necesario limitarse a un conjunto de plantillas listas para usar. Puede utilizar sus propios ajustes de sesión de seguimiento configurándolos en la pestaña EventosSelección. En la tabla de esta pestaña, debe seleccionar los eventos requeridos (en filas) y la información (en columnas) que se registrará para ellos. Tenga en cuenta que solo una pequeña fracción de las filas y columnas disponibles están visibles de forma predeterminada. Para habilitar la visualización de todas las filas y columnas, debe marcar las casillas showTodoEventos(Mostrar todos los eventos) y showTodocolumnas(Mostrar todas las columnas).

Suele ocurrir que desea realizar un seguimiento solo de las acciones realizadas en una base de datos específica, o por una aplicación específica, o por un usuario específico, o seleccionar todas estas condiciones al mismo tiempo. Los filtros para recopilar información se pueden configurar haciendo clic en el botón Columnafiltros Pestaña (Filtros de columna) EventosSelección. Cada columna se puede configurar para registrar solo valores específicos ( Me gusta) o impidiendo que se escriban determinados valores ( No como). De forma predeterminada, solo se configura un filtro: No como para columna Nombre de la aplicación. Hace que se ignoren todos los eventos de SQL Server Profiler, es decir, todos los eventos relacionados con el propio proceso de recopilación de seguimiento. Es mejor no eliminar este filtro, porque de lo contrario puede ocurrir una retroalimentación positiva con un registro interminable de información.

Con otro botón Organizarcolumnas(Organizar columnas), que se encuentra en la pestaña EventosSelección, puede personalizar el orden de las columnas para mostrar o registrar en el generador de perfiles. Presta atención a la sección. grupo(Grupo) en esta lista. Para aquellas columnas que se coloquen en él, la agrupación se realizará automáticamente. Si coloca solo una columna en esta sección, cuando la vea, tendrá la oportunidad de usar un modo muy conveniente. Agregadovista(Vista agregada) (cuando la información se agrupa automáticamente, por ejemplo, por base de datos, aplicación, nombre de usuario, etc., y los registros de la base de datos, la aplicación o el usuario deseados se pueden expandir y contraer).

Después de seleccionar la plantilla deseada o configurar su propio conjunto de eventos para el registro, solo tiene que volver a la pestaña General y configure algunas opciones avanzadas de sesión de seguimiento.

La información de seguimiento se puede registrar en un archivo. Este archivo se puede utilizar en diferentes situaciones:

q se puede pasar como fuente de información a Database Tuning Advisor;

q puede "jugar" nuevamente en el generador de perfiles, repitiendo todos los comandos grabados, por ejemplo, para evaluar el rendimiento con diferentes configuraciones del servidor;

q se puede presentar a los desarrolladores en apoyo de sus reclamos a la aplicación.

Observemos algunos puntos relacionados con el registro de una sesión de rastreo en un archivo:

q 5 MB, que es el límite de tamaño de archivo predeterminado, es muy pequeño. Al perfilar un servidor de producción, este tamaño se gana en minutos. Es cierto, la casilla de verificación está marcada de forma predeterminada. permitirArchivodese la vuelta(Habilitar cambio de archivo), es decir, después de completar un archivo, se creará automáticamente un segundo archivo, a cuyo nombre se agregará el número 1, luego - 2, etc., pero trabajar con una gran cantidad de archivos no es siempre conveniente. Si está recopilando información para enviarla al Asesor de optimización de la base de datos, es mejor establecer el límite de tamaño de archivo en 1 GB (utilizando el colocarmáximoArchivoTalla Pestaña (Establecer tamaño máximo de archivo) General). El seguimiento suele escribirse en un archivo desde la estación de trabajo del administrador, por lo que se necesitará espacio en disco en la estación de trabajo y no en el servidor;

q parámetro servidorprocesosrastrodatos(El servidor está procesando datos de rastreo) se puede utilizar para aumentar la confiabilidad de registrar información de rastreo. De forma predeterminada, SQL Server Profiler maneja los datos de seguimiento y lo hace en la máquina en la que se ejecuta (no necesariamente en el servidor). Si selecciona esta casilla de verificación, el servidor manejará el procesamiento de la información de seguimiento. Esto garantiza que se recopile toda la información de rastreo (si la casilla de verificación no está marcada, es posible que se pierda parte de la información durante las horas pico del servidor), pero aumentará la carga en el servidor.

Otra opción para escribir información de seguimiento es escribir en una tabla de SQL Server. Se creará automáticamente una tabla con el conjunto de columnas deseado. Solo puede ajustar el número máximo de entradas en esta tabla. Tenga en cuenta que en esta pestaña el número máximo de entradas se indica en miles.

La última opción en la pestaña. General- permitirRastrodetenerhora(Habilitar tiempo de parada de seguimiento). Puede especificar una hora en la que el seguimiento se deshabilitará automáticamente. Por lo general, tiene sentido desactivar el seguimiento antes de iniciar algunas operaciones de limpieza que no le interesan desde el punto de vista del registro (copia de seguridad, carga masiva de datos, procesamiento de cubos OLAP, etc.).

Después de configurar todos los parámetros de seguimiento, puede hacer clic en el botón Correr Pestaña (Ejecutar) General y comience a rastrear (Fig. 11.2).

Arroz. 11.2. Visualización de información durante una sesión de seguimiento

El funcionamiento del Visor de información de seguimiento es bastante sencillo: la sección superior muestra los eventos que ocurren en el servidor, mientras que la sección inferior proporciona información detallada sobre ellos (por ejemplo, código de comando SQL). Estas son algunas de las opciones disponibles en esta ventana:

q si ficha Organizarcolumnas en las propiedades de la plantilla ha seleccionado columnas para agrupar, puede agrupar registros por estas columnas en la ventana de vista. Para ello, el menú vista(Ver) comando proporcionado agrupadosvista(vista agrupada);

q si en la misma pestaña en las propiedades de la plantilla en la lista grupo solo se ha colocado una columna, puede usar un modo de visualización aún más conveniente Agregadovista(Figura 11.3). Este modo se habilita con el comando Agregadovista del mismo menú vista y le permite convertir los valores de la columna elegida en nodos de árbol que se pueden contraer y expandir. Además, el número de eventos se cuenta automáticamente para cada uno de estos nodos.

Arroz. 11.3. Modo de visualización Agregadovista

q En el generador de perfiles, puede mostrar no solo los eventos que se acaban de capturar, sino también los archivos guardados y las tablas de seguimiento. Además, puede abrir scripts regulares de SQL Server con comandos Transact -SQL. La información de estos archivos o tablas se puede utilizar para reproducir operaciones registradas. Los comandos del menú son para este propósito. Repetición(Repetir);

q Se ha introducido una nueva característica en SQL Server 2005 Profiler: vincular la información de seguimiento con los contadores de rendimiento del Monitor de rendimiento. Para aprovechar esta oportunidad necesitas:

definir una sesión de seguimiento durante la cual se debe escribir la información de las columnas Hora de inicio y Hora de finalización;

· iniciar una sesión de rastreo con información escrita en un archivo o tabla. Simultáneamente con él, recopile un registro de las lecturas del medidor Performance Monitor en un archivo;

abra la información recopilada del archivo de rastreo en el perfilador y luego use el comando ImportarRendimientoDatos(Importar datos de rendimiento) del menú Archivo.

SQL Server 2005 proporciona un reemplazo para el generador de perfiles. Estos son procedimientos almacenados de seguimiento. Su funcionalidad casi idénticas a las capacidades del generador de perfiles. Por ejemplo, también puede seleccionar eventos para rastrear y escribirlos en un archivo de texto. La principal diferencia es que todas las configuraciones deberán realizarse desde el código Transact -SQL.

Trabajar con procedimientos almacenados de rastreo es más difícil y menos conveniente que con un generador de perfiles, y no proporcionan características adicionales. Por lo tanto, no los consideraremos en detalle. Damos sólo una lista de tales procedimientos almacenados con breve descripción:

q sp_trace_create- le permite configurar los parámetros de la sesión de seguimiento;

q sp_trace_setevent- le permite seleccionar los eventos necesarios para la sesión de seguimiento creada;

q sp_trace_setfilter- le permite configurar un filtro para recopilar información de seguimiento;

q sp_trace_setstatus- le permite iniciar un seguimiento, detenerlo o eliminar el procedimiento almacenado generado sp_trace_create definición de la sesión actual;

q sp_trace_generateevent- le permite generar un evento personalizado que será interceptado durante el rastreo.

Este artículo contiene varios materiales publicados en la lista de correo "MS SQL Server: un asunto delicado ..." y dedicado a los problemas de monitoreo de la efectividad de MS SQL Server, métodos para descubrir las causas de los problemas de hardware y su resolución. Además, se ofrecerán a su atención algunas recomendaciones y advertencias útiles y prácticas.

Si su servidor de base de datos utiliza demasiada E/S, puede cambiar el valor del parámetro del sistema operativo Límite de bloqueo de página de E/S, lo que puede aumentar la tasa efectiva de lectura/escritura de datos. sistema operativo a los discos duros.
Primero, ejecute el punto de referencia de E/S contra la carga típica de su servidor. Luego, en regedit.exe, abra la clave:

HKLM\SISTEMA\CurrentControlSet\Control\SessionManager\MemoryManagement\IoPageLockLimit

El significado de sus acciones es la selección paso a paso de los valores de esta clave al valor más óptimo, en términos de cambios en los resultados de la evaluación comparativa.
En esta clave, el sistema operativo lee el número máximo de bytes que puede utilizar para operaciones de E/S. El valor predeterminado es 0, que corresponde a 512 KB. Aumente este valor en incrementos de 512 KB cada vez (por ejemplo: "512", "1024", etc.) y compare su sistema después de cada cambio. Tiene sentido aumentar este parámetro solo mientras observe un aumento en el rendimiento de las operaciones de E/S, lo que puede manifestarse en una disminución del tiempo dedicado a las operaciones de disco estándar. Cuando deje de ver una mejora significativa, vuelva al Editor del Registro y elimine el último incremento.

Advertencia: hay un límite en el tamaño máximo de este valor clave. Si tiene 16 MB de RAM, no establezca IoPageLockLimit en más de 2048 bytes; para 32 MB de RAM, no supere los 4096 bytes, y así sucesivamente.

Nota IMPORTANTE:

Las operaciones enumeradas por Sergey, si se aplican de forma incorrecta o errónea, pueden provocar el colapso de su sistema. Por lo tanto, asegúrese de tener copias de seguridad de la base de datos y del sistema con anticipación, guarde la configuración de trabajo de NT y simule posibles cambios en el sitio de prueba. Nunca haga más de un cambio de configuración a la vez.

Cuota