I cubi richiedono un monitoraggio frequente poiché la loro produttività diminuisce abbastanza spesso (rallentamenti durante la creazione di query, incremento del tempo di elaborazione). Per scoprire il motivo della diminuzione, dobbiamo monitorare il nostro sistema. Per questo, utilizziamo SQL Server Profiler. Tuttavia, Microsoft prevede di escludere questo strumento di traccia SQL nelle versioni successive. Lo svantaggio principale dello strumento è l'intensità delle risorse e dovrebbe essere eseguito con attenzione su un server di produzione, poiché potrebbe causare una perdita critica di produttività del sistema.
Pertanto, Extended Events è un sistema generale di gestione degli eventi per i sistemi server. Questo sistema supporta la correlazione dei dati da SQL Server che consente di ottenere gli eventi di stato di SQL Server.
L'architettura del sistema è mostrata di seguito:
In effetti, abbiamo un pacchetto che contiene eventi, obiettivi, azioni, tipi, predicati e mappe. Le sessioni contenenti eventi, destinazioni e azioni vengono eseguite sul server. Non descriverò l'architettura in dettaglio poiché la guida contiene una descrizione esplicita.
Ora, torniamo al nostro SSAS. Per rendere tutto più vivido, consideriamo diversi scenari che utilizziamo per l'analisi dei problemi.
Primo scenario:Analisi dell'elaborazione del cubo (Cubo multidimensionale)
È spesso il caso in cui un cubo viene aggiornato per molto tempo durante l'elaborazione, sebbene il volume di dati sia piuttosto basso. Per scoprirne il motivo, dobbiamo capire quale query o quale luogo di elaborazione causa il rallentamento. Naturalmente, possiamo eseguire l'elaborazione su Produzione e vedere cosa sta succedendo, ma non sono sicuro che i tuoi utenti lo apprezzeranno. Qui Extended Events viene in aiuto. Eseguiamo la nostra sessione e configuriamo il suo salvataggio in un file.
Apriamo SSMS e connettiamoci a SSAS, quindi passiamo a Gestione.
Ora creiamo una nuova sessione:
- Nella scheda Generale, specifica un nome per la nostra sessione e carica un modello.
- Gli Eventi la scheda mostra gli eventi che ci aiuteranno ad analizzare i problemi. La scheda presenta tutti i nostri vecchi amici di Profiler. Selezioniamo i seguenti eventi per l'elaborazione dell'analisi:CommandBegin , CommandEnd, Programma essReportBegin e ProgressReportEnd, ResourseUsage.
ComandoInizio , CommandEnd mostrerà l'inizio e la fine dell'esecuzione del comando durante l'elaborazione.
Programma essReportBegin e ProgressReportEn fornire informazioni estese sulla durata di ciascun evento e mostrare dati letti, esecuzione di query SQL, lunghezza ecc.
Utilizzo delle risorse mostra il numero di risorse che sono state spese per l'esecuzione di una query, un'azione.
Quando abbiamo selezionato gli eventi, possiamo passare alla configurazione di ciascun evento e specificare quali eventi devono essere mostrati e quali eventi devono essere nascosti (ad esempio, possiamo nascondere l'ID processo).
- Archiviazione dati scheda. Qui possiamo specificare se mostrare gli eventi in modalità in tempo reale o scriverli su un file:
- file_evento – salvataggio dell'evento in un file per ulteriori analisi. Specificare la dimensione massima del file e il percorso di destinazione. Se la dimensione del file supera la dimensione specificata, verrà creato un nuovo file. Inoltre, possiamo specificare il numero di file che devono essere creati (numero massimo di file).
- stream_evento – consente di visualizzare gli eventi in modalità in tempo reale.
- ring_buffer – specifica che i dati della sessione devono essere archiviati in memoria finché il server è in esecuzione. In caso di ricarica, i dati verranno eliminati.
- Gli avanzati la scheda consente di configurare le risorse (memoria, processore) per una determinata sessione.
Infine, fai clic su OK e ottieni la sessione. Eseguiamo l'elaborazione del cubo e vediamo l'elaborazione per eventi. Passa alla modalità dati in tempo reale.
Nella parte superiore dello screenshot seguente, possiamo vedere gli eventi che hanno luogo in questo momento con la nostra istanza. I dettagli degli eventi sono riportati in fondo. Qualsiasi valore dei dettagli dell'evento può essere aggiunto come una colonna separata in alto. Fare clic con il pulsante destro del mouse su un valore selezionato dei dettagli dell'evento e visualizzarli in una tabella.
Nel risultato, otteniamo la seguente vista:
Pertanto, gli Eventi estesi consentono di analizzare la nostra elaborazione in modalità in tempo reale. Possiamo capire quanto tempo viene speso per l'elaborazione di ogni oggetto, quante risorse vengono utilizzate al termine. Questo aiuta a trarre conclusioni e trovare punti deboli. Inoltre, non sovraccarichiamo il sistema e non subiamo perdite di produttività.
Puoi anche creare sessioni tramite XMLA. Puoi recuperare lo script su GitHub.
L'arresto e l'eliminazione di una sessione è possibile tramite SSMS e XMLA.
- Tramite SSMS (tuttavia, nel 2016 si verifica l'errore e non sono riuscito a eliminare la sessione tramite l'interfaccia).
- Script XML:può essere scaricato qui.
Questa è la prima parte dell'articolo sugli eventi estesi per SSAS. Nella seconda parte, considereremo uno scenario di analisi della produttività delle query nel cubo, utilizzando il file di traccia e analizzando il file tramite Power BI.
Consiglio anche di dare un'occhiata ai seguenti post del blog:
- Pinal Dave — SQL SERVER — SQL Profiler e eventi estesi
- Chris Web:Profiler, eventi estesi e servizi di analisi. Sebbene l'autore dell'articolo affermi che Profiler non viene quasi utilizzato sui server di produzione, ma conferma i suoi problemi con il carico del server.
- Brent Ozar — Eventi estesi di SQL Server