Analizzare le prestazioni del database con gli eventi estesi

Questa pagina descrive come utilizzare gli eventi estesi (XEvents) sulle istanze.

Cloud SQL per SQL Server supporta l'utilizzo di XEvents per monitorare, identificare e risolvere i problemi di prestazioni del database. A questo scopo, devi creare sessioni XEvent e leggere i file di output XEvent. Puoi leggere i file di output XEvent sull'istanza o scaricandoli da un bucket Cloud Storage.

Prima di iniziare

Se vuoi caricare i file XEvent in un bucket Cloud Storage, allora crea un bucket nel tuo Google Cloud account.

Best practice

  • Per evitare di trasferire file di grandi dimensioni tra le regioni, ti consigliamo di eseguire una delle seguenti operazioni:
    • Crea bucket Cloud Storage multiregionali
    • Configura il bucket Cloud Storage di destinazione nella stessa regione dell'istanza
  • Prima di utilizzare XEvents, abilita gli aumenti automatici dello spazio di archiviazione. I file di output XEvent, a seconda delle dimensioni totali e degli intervalli di conservazione, potrebbero richiedere una quantità significativa di spazio su disco.
  • Per evitare di conservare troppi file XEvent per un periodo di tempo prolungato, configura una policy di conservazione dei dati per il bucket Cloud Storage.
  • Se crei una sessione XEvent utilizzando l'interfaccia utente di SSMS, ma alcune caselle per i valori di input non vengono visualizzate, ridimensiona la finestra Crea sessione XEvent.

Come creare sessioni XEvent

XEvents è abilitato automaticamente sulle istanze.

Utilizza il CREATE EVENT SESSION comando per definire nuove sessioni XEvent. Puoi anche utilizzare l'interfaccia utente di SQL Server Management Studio (SSMS) per creare sessioni XEvent.

Cloud SQL applica i seguenti parametri a tutte le sessioni XEvent:

Parametro Descrizione Valori consentiti
FILENAME Specifica il nome file e il percorso per l'archiviazione dei dati della sessione XEvents. Qualsiasi percorso che inizia con /var/opt/mssql/xevents/
MAX_FILE_SIZE Specifica la dimensione massima di ogni file di output prima della creazione di un nuovo file. Minimo 10 MB
Massimo 1 GB
MAX_MEMORY Specifica la quantità massima di memoria da allocare alla sessione per il buffering degli eventi. Minimo 4 MB
Massimo 8 MB
MAX_DISPATCH_LATENCY Specifica il tempo massimo (in secondi) in cui gli eventi possono rimanere nella coda di invio degli eventi prima di essere inviati alla destinazione. Minimo 1 secondo
Massimo 30 secondi
MAX_EVENT_SIZE Imposta la dimensione massima di ogni evento, in byte. Minimo 4 MB
Massimo 8 MB

Parametri di configurazione della sessione XEvent

Puoi configurare le sessioni XEvent utilizzando i seguenti parametri come flag personalizzati:

Parametro Descrizione
cloud sql xe bucket name Specifica il bucket Cloud Storage in cui vuoi caricare l'output della sessione XEvent. Se non viene specificato, Cloud SQL non carica i dati di output della sessione XEvent data in Cloud Storage.
cloud sql xe output total disk size (mb) Specifica la quantità di spazio su disco da riservare per l'output di tutte le sessioni XEvent. Se non viene specificato, Cloud SQL utilizza uno spazio su disco predefinito di 512 MB. Se i file di output XEvent utilizzano uno spazio su disco superiore al valore di cloud sql xe output total disk size (mb), Cloud SQL li rimuove dal disco.
cloud sql xe file retention (mins) Specifica il tempo di conservazione sull'istanza in minuti per i file generati dalle destinazioni dei file delle sessioni XEvent. Se non viene specificato, Cloud SQL utilizza un valore predefinito di 7 giorni.
cloud sql xe upload interval (mins) Specifica l'intervallo di caricamento per i file XEvent caricati in Cloud Storage. Se non viene specificato, Cloud SQL utilizza un valore predefinito di 10 minuti.

Per saperne di più sull'impostazione di questi flag, consulta Configurare i flag di database.

Come leggere i file di output della sessione XEvent

Puoi leggere i file di output della sessione XEvent da un'istanza Cloud SQL o da un bucket Cloud Storage.

Leggere i file di output XEvent da un'istanza

Per recuperare i dati da un file XEvent creato da una sessione XEvent, utilizza la sys.fn_xe_file_target_read_file funzione.

Ecco un esempio:

SELECT * FROM sys.fn_xe_file_target_read_file('/var/opt/mssql/xevents/filename*, NULL, NULL, NULL);

Leggere i file di output XEvent da un bucket

Per leggere i file di output XEvent da un bucket Cloud Storage, scaricali dal bucket in un'istanza SQL Server. Puoi scaricare da una delle seguenti istanze:

  • Un'istanza Windows di Compute Engine
  • Un'istanza Linux di Compute Engine
  • Un altro tipo di istanza che esegue SQL Server

Trasferisci quindi i file di output XEvent dal bucket in una posizione accessibile all'istanza, ad esempio il disco locale. Successivamente, per restituire le informazioni dal file di output XEvent, esegui la funzione sys.fn_xe_file_target_read_file con un account che dispone dell'autorizzazione VIEW SERVER STATE sul server. Per saperne di più sulle autorizzazioni, consulta Autorizzazioni.

Concedere le autorizzazioni per caricare i file in un bucket Cloud Storage

Per concedere le autorizzazioni per caricare i file XEvent in un bucket Cloud Storage, completa i seguenti passaggi:

Console

  1. Nella Google Cloud console, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket in cui vuoi caricare i file XEvent.

  3. Nella pagina Dettagli bucket, fai clic sulla scheda Autorizzazioni.

  4. Nella scheda Visualizza per entità, fai clic su Concedi l'accesso.

  5. Nella sezione Aggiungi entità, nel campo Nuova entità, inserisci il service account dell'istanza Cloud SQL che vuoi utilizzare.

  6. Nella sezione Assegna i ruoli, nel campo Seleziona un ruolo, inserisci il ruolo Utente oggetti Storage (roles/storage.objectUser). Per saperne di più sul ruolo, consulta Ruoli richiesti di Cloud Storage.

Monitoraggio delle metriche

Puoi monitorare le seguenti operazioni correlate a xevent come parte delle metriche di Cloud SQL, disponibili tramite Esplora metriche:

  • database/sqlserver/xevents_upload_count: indica il totale dei tentativi di caricamento dei file xevent riusciti e non riusciti. Controlla questa metrica per verificare se i caricamenti sono andati a buon fine.
  • database/sqlserver/xevents_size.: indica la quantità di spazio su disco utilizzata dai file xevent archiviati nell'istanza, in byte.

Monitorare le sessioni XEvent

Puoi monitorare le attività correlate alla sessione XEvent tramite il file xevents.log per le seguenti operazioni:

  • I file di output XEvent rimossi dal disco, che non sono stati caricati in Cloud Storage e occupavano uno spazio su disco superiore al valore associato a cloud sql xe output total disk size (mb).
  • I file di output XEvent rimossi dal disco, che non sono stati caricati in Cloud Storage e sono precedenti al valore associato a cloud sql xe file retention.

Considerazioni per le repliche di lettura e i pool di lettura

Questa sezione contiene informazioni sulle sessioni XEvent per le repliche di lettura e i pool di lettura.

Per le nuove repliche di lettura e i nuovi pool di lettura

  • Tutti i parametri di configurazione della sessione XEvent passati tramite i flag di database sull'istanza originale sono disponibili sulla replica di lettura appena creata.
  • Tutte le sessioni XEvent presenti sull'istanza originale al momento della creazione delle repliche di lettura sono disponibili sulla replica di lettura. Tieni presente che le sessioni XEvent sulla replica di lettura devono essere avviate manualmente, a meno che non siano configurate per l'avvio automatico. Per saperne di più, consulta Come creare sessioni XEvent.
  • Se cloni un'istanza principale, tutti i flag di database visualizzati sull'istanza principale vengono propagati all'istanza clonata. Inoltre, devi concedere nuovamente le autorizzazioni al account di servizio dell'istanza clonata per accedere al bucket Cloud Storage.
  • La replica di lettura o il pool di lettura carica un file di output in Cloud Storage.
    • Per le repliche di lettura, il nome file fa riferimento alla replica di lettura.
    • Per i pool di lettura, il nome file fa riferimento al nodo del pool di lettura specifico.

Per le repliche di lettura e i pool di lettura esistenti

  • I parametri di configurazione della sessione XEvent passati tramite i flag di database all'istanza originale non vengono propagati alle repliche di lettura.
  • Le sessioni XEvent create sull'istanza originale non vengono propagate alle repliche di lettura.

Passaggi successivi