Share via


Logboekregistratie voor trage query's in Azure Database for MySQL

VAN TOEPASSING OP: Azure Database for MySQL - enkele server

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

In Azure Database for MySQL is het logboek voor langzame query's beschikbaar voor gebruikers. Toegang tot het transactielogboek wordt niet ondersteund. Het logboek voor trage query's kan worden gebruikt om prestatieknelpunten te identificeren voor het oplossen van problemen.

Voor meer informatie over het logboek voor langzame MySQL-query's raadpleegt u de sectie Over het logboek voor langzame query's van MySQL.

Wanneer Query Store is ingeschakeld op uw server, ziet u mogelijk de query's zoals 'CALL mysql.az_procedure_collect_wait_stats (900, 30);' die zijn vastgelegd in uw logboeken voor langzame query's. Dit gedrag wordt verwacht omdat de functie Query Store statistieken over uw query's verzamelt.

Logboekregistratie van langzame query's configureren

Standaard is het logboek voor langzame query's uitgeschakeld. Als u dit wilt inschakelen, stelt u deze in slow_query_log op AAN. Dit kan worden ingeschakeld met behulp van Azure Portal of Azure CLI.

Andere parameters die u kunt aanpassen, zijn:

  • long_query_time: als een query langer duurt dan long_query_time (in seconden) die query wordt geregistreerd. De standaardwaarde is 10 seconden.
  • log_slow_admin_statements: indien ON administratieve instructies bevat zoals ALTER_TABLE en ANALYZE_TABLE in de verklaringen die naar de slow_query_log zijn geschreven.
  • log_queries_not_using_indexes: bepaalt of query's die geen indexen gebruiken, worden geregistreerd bij de slow_query_log
  • log_throttle_queries_not_using_indexes: met deze parameter wordt het aantal niet-indexquery's beperkt dat naar het logboek voor langzame query's kan worden geschreven. Deze parameter wordt van kracht wanneer log_queries_not_using_indexes is ingesteld op AAN.
  • log_output: als 'Bestand' het langzame querylogboek naar zowel de opslag van de lokale server als naar diagnostische logboeken van Azure Monitor kan worden geschreven. Als 'None' wordt opgegeven, wordt het logboek voor trage query's alleen naar Diagnostische logboeken van Azure Monitor geschreven.

Belangrijk

Als uw tabellen niet zijn geïndexeerd, is het mogelijk dat het instellen van de parameters log_queries_not_using_indexes en log_throttle_queries_not_using_indexes op AAN van invloed is op de MySQL-prestaties, omdat alle query's die voor deze niet-geïndexeerde tabellen worden uitgevoerd, worden weggeschreven naar het logboek voor langzame query's.

Als u van plan bent om trage query's gedurende een langere periode te registreren, is het raadzaam om deze in te stellen log_output op 'Geen'. Als deze optie is ingesteld op 'Bestand', worden deze logboeken naar de lokale serveropslag geschreven en kunnen deze invloed hebben op de MySQL-prestaties.

Zie de documentatie voor langzame mySQL-querylogboeken voor volledige beschrijvingen van de logboekparameters voor langzame query's.

Toegang tot logboeken voor langzame query's

Er zijn twee opties voor het openen van logboeken voor langzame query's in Azure Database for MySQL: lokale serveropslag of diagnostische logboeken van Azure Monitor. Dit wordt ingesteld met behulp van de log_output parameter.

Voor lokale serveropslag kunt u logboeken voor langzame query's weergeven en downloaden met behulp van de Azure-portal of de Azure CLI. Navigeer in de Azure Portal naar uw server in de Azure Portal. Selecteer onder de kop Bewaking de pagina Serverlogboeken . Zie Logboeken voor langzame query's configureren en openen met behulp van Azure CLI voor meer informatie over Azure CLI.

Met diagnostische logboeken van Azure Monitor kunt u trage querylogboeken doorsluisen naar Azure Monitor-logboeken (Log Analytics), Azure Storage of Event Hubs. Zie hieronder voor meer informatie.

Retentie van opslaglogboeken van lokale server

Wanneer u zich aanmeldt bij de lokale opslag van de server, zijn logboeken maximaal zeven dagen na het maken beschikbaar. Als de totale grootte van de beschikbare logboeken groter is dan 7 GB, worden de oudste bestanden verwijderd totdat er ruimte beschikbaar is. De opslaglimiet van 7 GB voor de serverlogboeken is gratis beschikbaar en kan niet worden verlengd.

Logboeken worden elke 24 uur of 7 GB geroteerd, afhankelijk van wat het eerst voorkomt.

Notitie

De bovenstaande logboekretentie is niet van toepassing op logboeken die worden doorgesluisd met behulp van diagnostische logboeken van Azure Monitor. U kunt de bewaarperiode wijzigen voor de gegevenssinks die worden verzonden naar (bijvoorbeeld Azure Storage).

Diagnostische logboeken

Azure Database for MySQL is geïntegreerd met diagnostische logboeken van Azure Monitor. Zodra u trage querylogboeken op uw MySQL-server hebt ingeschakeld, kunt u ervoor kiezen om ze te laten verzenden naar Azure Monitor-logboeken, Event Hubs of Azure Storage. Zie de sectie van de documentatie voor diagnostische logboeken voor meer informatie over het inschakelen van diagnostische logboeken.

Notitie

Premium Storage-accounts worden niet ondersteund als u de logboeken naar Azure Storage verzendt via diagnostische gegevens en instellingen

In de volgende tabel wordt beschreven wat er in elk logboek staat. Afhankelijk van de uitvoermethode kunnen de velden die zijn opgenomen en de volgorde waarin ze worden weergegeven, variëren.

Eigenschappen Beschrijving
TenantId Uw tenant-id
SourceSystem Azure
TimeGenerated [UTC] Tijdstempel waarop het logboek is vastgelegd in UTC
Type Type van het logboek. Altijd AzureDiagnostics
SubscriptionId GUID voor het abonnement waartoe de server behoort
ResourceGroup De naam van de resourcegroep waartoe de server behoort
ResourceProvider Naam van de resourceprovider. Altijd MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Resource-URI
Resource Naam van de server
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Naam van de server
start_time_t [UTC] Tijdstip waarop de query is gestart
query_time_s Totale tijd in seconden die de query heeft geduurd om uit te voeren
lock_time_s Totale tijd in seconden dat de query is vergrendeld
user_host_s Username
rows_sent_d Aantal verzonden rijen
rows_examined_s Aantal onderzochte rijen
last_insert_id_s last_insert_id
insert_id_s Id invoegen
sql_text_s Volledige query
server_id_s De id van de server
thread_id_s Thread-id
\_ResourceId Resource-URI

Notitie

Logboek sql_textwordt afgekapt als het langer is dan 2048 tekens.

Logboeken analyseren in Azure Monitor-logboeken

Zodra uw logboeken met trage query's via diagnostische logboeken naar Azure Monitor-logboeken worden doorgesluisd, kunt u verdere analyse uitvoeren van uw trage query's. Hieronder vindt u enkele voorbeeldquery's om u te helpen aan de slag te gaan. Zorg ervoor dat u het onderstaande bijwerkt met de servernaam.

  • Query's langer dan 10 seconden op een bepaalde 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
    
  • Top 5 langste query's op een bepaalde server weergeven

    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
    
  • Trage query's samenvatten op minimale, maximale, gemiddelde en standaarddeviatiequerytijd op een bepaalde 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
    
  • Grafiek van de trage querydistributie op een bepaalde 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
    
  • Query's langer dan 10 seconden weergeven op alle MySQL-servers waarvoor diagnostische logboeken zijn ingeschakeld

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

Volgende stappen