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_text
trunkeras 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