Log di query lente in Database di Azure per MariaDB
Importante
Database di Azure per MariaDB è sul percorso di ritiro. È consigliabile eseguire la migrazione a Database di Azure per MySQL. Per altre informazioni sulla migrazione a Database di Azure per MySQL, vedere What's happening to Database di Azure per MariaDB?.
Nel Database di Azure per MariaDB, il log delle query lente è disponibile per gli utenti. L'accesso al log delle transazioni non è supportato. Il log delle query lente può essere usato per identificare eventuali colli di bottiglia delle prestazioni e procedere alla risoluzione dei problemi.
Per altre informazioni sul log delle query lente, vedere la documentazione MariaDB per il log delle query lente.
Quando Query Store è abilitato nel server, è possibile visualizzare le query come "CALL mysql.az_procedure_collect_wait_stats (900, 30);
" registrate nei log di query lente. Questo comportamento è previsto perché la funzionalità Query Store raccoglie statistiche sulle query.
Configurare la registrazione delle query lente
Per impostazione predefinita il log delle query lente è disabilitato. Per abilitarla, impostare su slow_query_log
ON. Questa opzione può essere abilitata usando il portale di Azure o l'interfaccia della riga di comando di Azure.
Altri parametri che è possibile modificare includono:
- long_query_time: se una query richiede più tempo del valore di long_query_time (in secondi), la query viene registrata. Il valore predefinito è 10 secondi.
- log_slow_admin_statements: se è ON include le istruzioni a livello amministrativo come ALTER_TABLE e ANALYZE_TABLE nelle istruzioni scritte in slow_query_log.
- log_queries_not_using_indexes: determina se le query che non usano gli indici vengono registrate in slow_query_log
- log_throttle_queries_not_using_indexes: questo parametro limita il numero di query non di indice che possono essere scritte nel log di query lente. Questo parametro ha effetto quando log_queries_not_using_indexes è impostato su ON.
- log_output: se "File", consente di scrivere il log delle query lente sia nell'archiviazione del server locale che nei log di diagnostica di Monitoraggio di Azure. Se è "Nessuna", il log di query lente verrà scritto solo nei log di diagnostica di Monitoraggio di Azure.
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 MariaDB perché tutte le query in esecuzione su queste tabelle non indicizzate verranno scritte nel log delle query lente.
Se si prevede di registrare query lente per un lungo periodo di tempo, è consigliabile impostare log_output
su "Nessuno". Se impostato su "File", questi log vengono scritti nell'archiviazione del server locale e possono influire sulle prestazioni di MariaDB.
Vedere documentazione riguardante il log delle query lente di MariaDB per una descrizione completa dei parametri del log delle query lente.
Accedere ai log di query lente
Esistono due opzioni per accedere ai log di query lente in Database di Azure per MariaDB: archiviazione server locale o Log di diagnostica di Monitoraggio di Azure. Viene impostato usando il log_output
parametro .
Per l'archiviazione del server locale, è possibile elencare e scaricare log di query lente usando il portale di Azure o l'interfaccia della riga di comando di Azure. Nella portale di Azure passare al server. Nell'intestazione Monitoraggio selezionare la pagina Log del server. Per altre informazioni sull'interfaccia della riga di comando di Azure, vedere Configurare e accedere ai log del server usando l'interfaccia della riga di comando di Azure.
I log di diagnostica di Monitoraggio di Azure consentono di inviare tramite pipe log di query lente ai log di Monitoraggio di Azure (Log Analytics), Archiviazione di Azure o Hub eventi. Per altre informazioni, vedere di seguito .
Conservazione dei log di archiviazione del server locale
Quando si accede all'archiviazione locale del server, i log sono disponibili per un massimo di sette giorni dalla creazione. Se le dimensioni totali dei log disponibili superano 7 GB, i file meno recenti vengono eliminati fino a quando non è disponibile dello spazio. Il limite di archiviazione di 7 GB per i log del server è disponibile gratuitamente e non può essere esteso.
I log vengono ruotati ogni 24 ore o 7 GB, a seconda del valore raggiunto per primo.
Nota
La conservazione dei log precedente non si applica ai log inviati tramite pipe usando i log di diagnostica di Monitoraggio di Azure. È possibile modificare il periodo di conservazione per i sink di dati in cui vengono generati (ad esempio, Archiviazione di Azure).
Log di diagnostica
Database di Azure per MariaDB è integrato con i log di diagnostica di Monitoraggio di Azure. Dopo aver abilitato i log di query lente nel server MariaDB, è possibile scegliere di inviarli ai log di Monitoraggio di Azure, a Hub eventi o Archiviazione di Azure. Per altre informazioni sull'abilitazione dei log di diagnostica, vedere la sezione sulle procedure della documentazione sui log di diagnostica.
La tabella seguente descrive il contenuto di ogni log. 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.DBFORMARIADB |
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 di esecuzione della query |
lock_time_s |
Tempo totale in cui la query è rimasta 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 |
INSERISCI ID |
sql_text_s |
Query completa |
server_id_s |
ID del server |
thread_id_s |
ID thread |
\_ResourceId |
URI risorsa |
Nota
Per sql_text
, 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 i log di diagnostica, è possibile eseguire un'ulteriore analisi delle query lente. Di seguito sono riportate alcune query di esempio che consentono di iniziare. Assicurarsi di aggiornare il codice seguente con il nome del server.
Query più lunghe di 10 secondi in un determinato server
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, 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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, 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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, 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 LogicalServerName_s
Grafico della distribuzione delle query lente in un server specifico
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) | render timechart
Visualizzare query di lunghezza superiore a 10 secondi in tutti i server MariaDB con i log di diagnostica abilitati
AzureDiagnostics | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s | where query_time_d > 10