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 parametrolong_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
- Altre informazioni sui log di controllo
- Informazioni dettagliate prestazioni query