Långsamma frågeloggar i Azure Database for MySQL

GÄLLER FÖR: Azure Database for MySQL – enskild server

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

I Azure Database for MySQL är den långsamma frågeloggen tillgänglig för användare. Åtkomst till transaktionsloggen stöds inte. Loggen för långsamma frågor kan användas för att identifiera prestandaflaskhalsar för felsökning.

Mer information om loggen för långsam MySQL-fråga finns i avsnittet Om den långsamma frågeloggen i MySQL-referenshandboken.

När Query Store är aktiverat på servern kan du se frågor som "CALL mysql.az_procedure_collect_wait_stats (900, 30);" loggas i dina långsamma frågeloggar. Det här beteendet förväntas eftersom funktionen Query Store samlar in statistik om dina frågor.

Konfigurera långsam frågeloggning

Loggen för långsamma frågor är inaktiverad som standard. Om du vill aktivera den anger du slow_query_log till PÅ. Detta kan aktiveras med hjälp av Azure-portalen eller Azure CLI.

Andra parametrar som du kan justera är:

  • long_query_time: om en fråga tar längre tid än long_query_time (i sekunder) loggas frågan. Standardvärdet är 10 sekunder.
  • log_slow_admin_statements: om ON innehåller administrativa instruktioner som ALTER_TABLE och ANALYZE_TABLE i de instruktioner som skrivits till slow_query_log.
  • log_queries_not_using_indexes: avgör om frågor som inte använder index loggas till slow_query_log
  • log_throttle_queries_not_using_indexes: Den här parametern begränsar antalet icke-indexfrågor som kan skrivas till den långsamma frågeloggen. Den här parametern börjar gälla när log_queries_not_using_indexes är inställd på PÅ.
  • log_output: om "File" tillåter att den långsamma frågeloggen skrivs till både den lokala serverlagringen och till Azure Monitor Diagnostic Logs. Om du anger ”None” skrivs loggen för långsamma frågor bara till Azure Monitor Diagnostic Logs.

Viktigt!

Alla frågor som körs mot icke-indexerade tabeller skrivs till den långsamma frågeloggen. Det betyder att prestandan i MySQL kan påverkas om dina tabeller inte är indexerade och du ställer in parametrarna log_queries_not_using_indexes och log_throttle_queries_not_using_indexes på ON.

Om du planerar att logga långsamma frågor under en längre tid rekommenderar vi att du anger log_output "Ingen". Om de är inställda på "Arkiv" skrivs dessa loggar till den lokala serverlagringen och kan påverka MySQL-prestanda.

Se dokumentationen för den långsamma frågeloggen i MySQL för fullständiga beskrivningar av de långsamma frågeloggparametrarna.

Komma åt loggar för långsamma frågor

Det finns två alternativ för att komma åt långsamma frågeloggar i Azure Database for MySQL: lokal serverlagring eller Azure Monitor-diagnostikloggar. Detta anges med hjälp av parametern log_output .

För lokal serverlagring kan du lista och ladda ned långsamma frågeloggar med hjälp av Azure-portalen eller Azure CLI. I Azure-portalen navigerar du till din server. Under rubriken Övervakning väljer du sidan Serverloggar . Mer information om Azure CLI finns i Konfigurera och komma åt långsamma frågeloggar med hjälp av Azure CLI.

Med Azure Monitor-diagnostikloggar kan du skicka långsamma frågeloggar till Azure Monitor-loggar (Log Analytics), Azure Storage eller Event Hubs. Mer information finns nedan .

Kvarhållning av lokal serverlagringslogg

När du loggar till serverns lokala lagring är loggar tillgängliga i upp till sju dagar från det att de har skapats. Om den totala storleken på de tillgängliga loggarna överskrider 7 GB tas de äldsta filerna bort tills det finns tillgängligt utrymme. Lagringsgränsen på 7 GB för serverloggarna är tillgänglig utan kostnad och kan inte utökas.

Loggar roteras var 24:e timme eller 7 GB, beroende på vilket som inträffar först.

Kommentar

Loggkvarhållningen ovan gäller inte för loggar som skickas med azure monitor-diagnostikloggar. Du kan ändra kvarhållningsperioden för de datamottagare som skickas till (t.ex. Azure Storage).

Diagnostikloggar

Azure Database for MySQL är integrerat med Azure Monitor-diagnostikloggar. När du har aktiverat långsamma frågeloggar på MySQL-servern kan du välja att låta dem skickas till Azure Monitor-loggar, Event Hubs eller Azure Storage. Mer information om hur du aktiverar diagnostikloggar finns i avsnittet om hur du läser dokumentationen om diagnostikloggar.

Kommentar

Premium Storage-konton stöds inte om du skickar loggarna till Azure Storage via diagnostik och inställningar

I följande tabell beskrivs vad som finns i varje logg. Beroende på utdatametoden kan fälten som ingår och i vilken ordning de visas variera.

Property Beskrivning
TenantId Ditt klientorganisations-ID
SourceSystem Azure
TimeGenerated [UTC] Tidsstämpel när loggen registrerades i UTC
Type Typ av logg. Alltid AzureDiagnostics
SubscriptionId GUID för den prenumeration som servern tillhör
ResourceGroup Namnet på resursgruppen som servern tillhör
ResourceProvider Namnet på resursprovidern. Alltid MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Resurs-URI
Resource Namnet på servern
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Namnet på servern
start_time_t [UTC] Tid då frågan började
query_time_s Total tid i sekunder som frågan tog att köra
lock_time_s Total tid i sekunder som frågan låstes
user_host_s Username
rows_sent_d Antal rader som skickats
rows_examined_s Antal undersökta rader
last_insert_id_s last_insert_id
insert_id_s Infoga ID
sql_text_s Fullständig fråga
server_id_s Serverns ID
thread_id_s Tråd-ID
\_ResourceId Resurs-URI

Kommentar

För sql_texttrunkeras loggen om den överskrider 2 048 tecken.

Analysera loggar i Azure Monitor-loggar

När dina långsamma frågeloggar skickas till Azure Monitor-loggar via diagnostikloggar kan du utföra ytterligare analys av dina långsamma frågor. Nedan visas några exempelfrågor som hjälper dig att komma igång. Se till att uppdatera nedanstående med servernamnet.

  • Frågor som är längre än 10 sekunder på en viss server

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | where query_time_d > 10
    
  • Lista de 5 längsta frågorna på en viss server

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | order by query_time_d desc
    | take 5
    
  • Sammanfatta långsamma frågor efter minsta, högsta, genomsnittliga och standardavvikelsefrågetid på en viss server

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_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
    
  • Diagram över den långsamma frågedistributionen på en viss server

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
    | render timechart
    
  • Visa frågor som är längre än 10 sekunder över alla MySQL-servrar med diagnostikloggar aktiverade

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

Nästa steg