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
    

Passaggi successivi