Los cubos requieren un monitoreo frecuente ya que su productividad disminuye con bastante frecuencia (ralentizaciones durante la construcción de consultas, incremento del tiempo de procesamiento). Para averiguar el motivo de la disminución, necesitamos monitorear nuestro sistema. Para esto, usamos SQL Server Profiler. Sin embargo, Microsoft planea excluir esta herramienta de seguimiento de SQL en versiones posteriores. La principal desventaja de la herramienta es la intensidad de los recursos, y debe ejecutarse con cuidado en un servidor de producción, ya que puede causar una pérdida crítica de productividad del sistema.
Por lo tanto, Extended Events es un sistema general de manejo de eventos para sistemas de servidor. Este sistema admite la correlación de datos de SQL Server, lo que permite obtener eventos de estado de SQL Server.
La arquitectura del sistema se muestra a continuación:
De hecho, tenemos un paquete que contiene Eventos, Objetivos, Acciones, Tipos, Predicados y Mapas. Las sesiones que contienen eventos, objetivos y acciones se ejecutan en el servidor. No describiré la arquitectura en detalle ya que la ayuda contiene una descripción explícita.
Ahora, volvamos a nuestro SSAS. Para hacer todo más vívido, consideremos varios escenarios que usamos para el análisis de problemas.
Primer escenario:análisis de procesamiento de cubos (cubo multidimensional)
Suele ocurrir cuando un cubo se actualiza durante mucho tiempo durante el procesamiento, aunque el volumen de datos es bastante bajo. Para averiguar el motivo, debemos comprender qué consulta o qué lugar de procesamiento provoca la ralentización. Por supuesto, podemos ejecutar el procesamiento en Producción y ver qué está pasando, pero no estoy seguro de que sus usuarios lo aprecien. Aquí Extended Events viene en ayuda. Ejecutemos nuestra sesión y configuremos su guardado en un archivo.
Abramos SSMS y conectemos a SSAS, y luego cambiemos a Administración.
Ahora, creemos una nueva sesión:
- En la pestaña General, especifique un nombre para nuestra sesión y cargue una plantilla.
- Los Eventos La pestaña muestra los eventos que nos ayudarán a analizar los problemas. La pestaña presenta a todos nuestros viejos amigos de Profiler. Seleccionemos los siguientes eventos para procesar el análisis:CommandBegin , Fin de comando, Programa essReportBegin y ProgressReportEnd, ResourceUsage.
ComandoComenzar , CommandEnd mostrará el comienzo y el final de la ejecución del comando durante el procesamiento.
Programa essReportBegin y Informe de progreso proporciona información ampliada sobre la duración de cada evento y muestra la lectura de datos, la ejecución de consultas SQL, la duración, etc.
Uso de recursos muestra la cantidad de recursos que se gastaron en la ejecución de una consulta, una acción.
Cuando seleccionamos los eventos, podemos cambiar para configurar cada evento y especificar qué eventos deben mostrarse y qué eventos deben ocultarse (por ejemplo, podemos ocultar la identificación del proceso).
- Almacenamiento de datos pestaña. Aquí podemos especificar mostrar eventos en el modo de tiempo real o escribirlos en un archivo:
- archivo_de_eventos – guardar el evento en un archivo para su posterior análisis. Especifique el tamaño máximo de archivo y la ruta de destino. Si el tamaño del archivo supera el tamaño especificado, se creará un nuevo archivo. Además, podemos especificar la cantidad de archivos que se deben crear (número máximo de archivos).
- flujo_de_eventos – permite ver eventos en el modo de tiempo real.
- buffer_de_anillo – especifica que los datos de la sesión deben almacenarse en la memoria mientras se ejecuta el servidor. En caso de recarga, los datos se perderán.
- El Avanzado La pestaña permite configurar los recursos (memoria, procesador) para una sesión determinada.
Finalmente, haga clic en Aceptar y obtener la sesión. Ejecutemos el procesamiento de cubos y veamos el procesamiento por eventos. Cambia al modo de datos en vivo.
En la parte superior de la siguiente captura de pantalla, podemos ver los eventos que tienen lugar en este momento con nuestra instancia. Los detalles de los eventos se muestran en la parte inferior. Cualquier valor de los detalles del evento se puede agregar como una columna separada en la parte superior. Haga clic con el botón derecho en un valor seleccionado de los detalles del evento y visualícelos en una tabla.
En el resultado, obtenemos la siguiente vista:
Por lo tanto, Extended Events permite analizar nuestro procesamiento en el modo de tiempo real. Podemos entender cuánto tiempo se dedica al procesamiento de cada objeto, cuántos recursos se utilizan con qué. Esto ayuda a sacar conclusiones y encontrar puntos débiles. Además, no sobrecargamos el sistema y no perdemos productividad.
También puede crear una sesión a través de XMLA. Puede recuperar el script en GitHub.
Es posible detener y eliminar una sesión a través de SSMS y XMLA.
- A través de SSMS (sin embargo, en 2016 se produjo el error y no pude eliminar la sesión a través de la interfaz).
- Script XML:se puede descargar aquí.
Esta es la primera parte del artículo sobre eventos extendidos para SSAS. En la segunda parte, consideraremos un escenario de análisis de productividad de consultas en cubo, trabajando con un archivo de seguimiento y analizando el archivo a través de Power BI.
También recomiendo echar un vistazo a las siguientes entradas del blog:
- Pinal Dave - SQL SERVER - SQL Profiler vs Extended Events
- Chris Web:generador de perfiles, eventos extendidos y servicios de análisis. Aunque el autor del artículo afirma que Profiler casi no se usa en servidores de producción, pero confirma sus problemas con la carga del servidor.
- Brent Ozar:eventos extendidos de SQL Server