Condividi tramite


Log di query lente in Database di Azure per MySQL - Server flessibile

SI APPLICA A: Database di Azure per MySQL - Server flessibile

In Database di Azure per MySQL server flessibile, il log delle query lente è disponibile per gli utenti per configurare e accedere. I log di query lente sono disabilitati per impostazione predefinita e possono essere abilitati per facilitare l'identificazione dei colli di bottiglia delle prestazioni durante la risoluzione dei problemi.

Per altre informazioni sul log delle query lente di MySQL, vedere la sezione log delle query lente nella documentazione del motore MySQL.

Configurare la registrazione di query lente

Log query lente è disabilitato per impostazione predefinita. Per abilitare i log, impostare il parametro del slow_query_log server su ON. Questa operazione può essere configurata usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Altri parametri che è possibile modificare per controllare il comportamento di registrazione delle query lente includono:

  • long_query_time: registrare una query se il completamento richiede più long_query_time tempo di (in secondi). Il valore predefinito è 10 secondi. Il parametro long_query_time del server si applica a livello globale a tutte le nuove connessioni stabilite in MySQL. Tuttavia, non influisce sui thread già connessi. È consigliabile riconnettersi a Database di Azure per MySQL server flessibile dall'applicazione o riavviare il server con valori meno recenti di "long_query_time" e applicare il valore del parametro aggiornato.
  • log_slow_admin_statements: determina se vengono registrate istruzioni amministrative (ad esempio ALTER_TABLE, ANALYZE_TABLE).
  • log_queries_not_using_indexes: determina se vengono registrate query che non usano indici.
  • log_throttle_queries_not_using_indexes: limita il numero di query non indicizzate che possono essere scritte nel log delle query lente. Questo parametro diventa effettivo quando log_queries_not_using_indexes è impostato su ON

Importante

Se le tabelle non sono indicizzate, l'impostazione dei log_queries_not_using_indexes parametri e log_throttle_queries_not_using_indexes su ON può influire sulle prestazioni di MySQL perché tutte le query in esecuzione su queste tabelle non indicizzate verranno scritte nel log delle query lente.

Per una descrizione completa dei parametri per il log di query lente, vedere la documentazione sul log di query lente per MySQL.

Accedere ai log di query lente

I log delle query lente sono integrati con le impostazioni di diagnostica di Monitoraggio di Azure. Dopo aver abilitato i log di query lente nell'istanza del server flessibile Database di Azure per MySQL, è possibile generarli nei log di Monitoraggio di Azure, in Hub eventi o Archiviazione di Azure. Per altre informazioni sulle impostazioni di diagnostica, vedere la documentazione dei log di diagnostica. Per altre informazioni su come abilitare le impostazioni di diagnostica nella portale di Azure, vedere l'articolo relativo al portale dei log delle query lente.

Nota

Archiviazione Premium account non sono supportati se si inviano i log all'archiviazione di Azure tramite diagnostica e impostazioni.

Nella tabella seguente viene descritto l'output del log delle query lente. A seconda del metodo di output, è possibile che i campi inclusi e il relativo ordine di visualizzazione siano differenti.

Proprietà Descrizione
TenantId ID del tenant.
SourceSystem Azure
TimeGenerated [UTC] Timestamp in cui il log è stato registrato in formato UTC.
Type Tipo di log. Sempre AzureDiagnostics
SubscriptionId GUID per la sottoscrizione a cui appartiene il server.
ResourceGroup Nome del gruppo di risorse a cui appartiene il server.
ResourceProvider Nome del provider di risorse. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI risorsa
Resource Nome del server
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Nome del server
start_time_t [UTC] Ora di inizio della query
query_time_s Tempo totale in secondi impiegato dalla query perché venga eseguita
lock_time_s Tempo totale in secondi durante il quale la query è stata bloccata
user_host_s Username
rows_sent_s Numero di righe inviate
rows_examined_s Numero di righe esaminate
last_insert_id_s last_insert_id
insert_id_s ID inserimento
sql_text_s Query completa
server_id_s ID del server
thread_id_s ID thread
\_ResourceId URI risorsa

Nota

Per sql_text_s, il log verrà troncato se supera i 2048 caratteri.

Analizzare i log in Log di Monitoraggio di Azure

Dopo che i log delle query lente vengono inviati tramite pipe ai log di Monitoraggio di Azure tramite log di diagnostica, è possibile eseguire un'ulteriore analisi delle query lente. Di seguito sono riportate alcune query di esempio per iniziare. Assicurarsi di aggiornare il codice seguente con il nome del server.

  • Query più lunghe di 10 secondi in un determinato server

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    
  • Elencare le prime 5 query più lunghe in un determinato server

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | order by query_time_d desc
    | take 5
    
  • Riepilogare le query lente per tempo di query minimo, massimo, medio e deviazione standard in un determinato server

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by Resource 
    
  • Grafico della distribuzione delle query lente in un server specifico

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count() by Resource , bin(TimeGenerated, 5m)
    | render timechart
    
  • Visualizzare le query per più di 10 secondi in tutte le istanze del server flessibile Database di Azure per MySQL con i log di diagnostica abilitati

    AzureDiagnostics
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    

Passaggi successivi