Tipo di agente di raccolta Attività query
Il tipo di agente di raccolta Attviità query è un tipo di agente personalizzato utilizzato dal set di raccolta Statistiche query, uno dei set di raccolta dati di sistema predefiniti.
Questo tipo di agente di raccolta viene utilizzato per raccogliere statistiche e informazioni sulle attività relative alle query con il piano e il testo delle query che soddisfano criteri predefiniti. Se si crea un set di raccolta personalizzato con questo tipo di agente di raccolta, verranno raccolte le stesse informazioni ottenute con il set di raccolta Statistiche query. Pertanto, si consiglia di utilizzare il set di raccolta Statistiche query predefinito.
Architettura ed elaborazione
Il tipo di agente di raccolta Attività query è costituito dagli elementi seguenti:
Uno schema dei parametri di input (interno)
Un pacchetto SSIS per la raccolta di dati (QueryActivityCollect.dtsx)
Un pacchetto SSIS per il caricamento di dati (QueryActivityUpload.dtsx)
Questo tipo di agente di raccolta utilizza inoltre attività o trasformazioni personalizzate per analizzare e selezionare dati per l'archiviazione nel data warehouse di gestione.
Il tipo di agente di raccolta Attività query effettua le operazioni seguenti:
Raccolta di esempi dm_exec_requests, dm_exec_sessions e selezione delle altre viste a gestione dinamica correlate. Questa attività viene implementata come singola query unita in join. La raccolta dati si verifica con la frequenza specificata per l'elemento della raccolta.
Raccolta di snapshot della vista a gestione dinamica dm_exec_query_stats con una frequenza uguale a quella di caricamento del set di raccolta. Per impostazione predefinita, la frequenza di caricamento del set di raccolta Statistiche query è di 15 minuti.
Fase di raccolta
Nella tabella seguente viene illustrata la query utilizzata durante la fase di raccolta. Tale query è definita nel pacchetto SSIS QueryActivityCollect.dtsx.
Frequenza di raccolta |
10 secondi |
Query |
|
Fase di caricamento
Durante la fase di caricamento i dati raccolti vengono analizzati per determinare quali verranno salvati nel data warehouse di gestione. Questa analisi determina un set di statistiche della query nonché piani e testo della query che è necessario salvare.
Un elemento fondamentale è un algoritmo che seleziona le query e i piani di query da salvare nel data warehouse. Le operazioni dell'algoritmo sono le seguenti:
Raccolta di uno snapshot di sys.dm_exec_query_stats. Questo snapshot viene raccolto a una frequenza uguale a quella di caricamento del set di raccolta. Il valore predefinito è 15 minuti.
Recupero dello snapshot più recente (eseguito fino a 15 minuti prima) per confrontarlo con quello nuovo. Lo snapshot più recente è memorizzato nella cache localmente e non occorre che sia recuperato dal data warehouse di gestione.
Selezione delle prime tre query da ogni snapshot tramite le metriche seguenti:
Tempo trascorso
Tempo di lavoro
Letture logiche
Scritture logiche
Letture fisiche
Conteggio esecuzioni
Questo processo fornisce 6 x 3 sql_handles e plan_handles.
Identificazione degli sql_handles e plan_handles univoci.
Intersezione di questo risultato con gli sql_handles e plan_handles archiviati nel data warehouse.
Per nuovi sql_handles e plan_handles, acquisizione del piano e del testo dal server. Se non è possibile trovare il piano o il testo (potrebbe essere già stato rimosso dalla cache locale), archiviazione degli handle nel data warehouse di gestione.
Per ogni testo dello sql_handle raccolto, normalizzazione del testo (ad esempio, rimozione di parametri e valori letterali) e calcolo del valore hash univoco per il testo normalizzato. Archiviazione del testo normalizzato, del valore hash e del mapping all'sql_handle originale nel data warehouse di gestione.
Nella tabella seguente viene illustrata la query utilizzata per ottenere gli snapshot, nonché per analizzare e quindi caricare i dati nel data warehouse di gestione. Tale query è definita nel pacchetto SSIS QueryActivityUpload.dtsx.
Query |
|
Output query |
snapshots.query_stats, snapshots.notable_query_text e snapshots.notable_query_plan |
Vedere anche