Freigeben über


Protokolle für langsame Abfragen für Azure Database for MySQL – Flexible Server

In Azure Database for MySQL Flexible Server ist das Protokoll für langsame Abfragen für Benutzer zur Konfiguration und zum Zugriff verfügbar. Protokolle für langsame Abfragen sind standardmäßig deaktiviert und können aktiviert werden, um bei der Identifizierung von Leistungsengpässen während der Problembehandlung zu helfen.

Weitere Informationen zum MySQL-Protokoll für langsame Abfragen finden Sie im Abschnitt zu Protokollen für langsame Abfragen in der MySQL-Engine-Dokumentation.

Konfigurieren der Protokollierung für langsame Abfragen

Das Protokoll für langsame Abfragen ist standardmäßig deaktiviert. Legen Sie den Serverparameter slow_query_log auf ON (EIN) fest, um Protokolle zu aktivieren. Diese Konfiguration kann über das Azure-Portal oder die Azure CLI erfolgen.

Sie können die folgenden anderen Parameter verwenden, um das Verhalten der Protokolle für langsame Abfragen zu konfigurieren:

  • long_query_time: Protokolliert eine Abfrage, wenn die Ausführung länger als long_query_time dauert (in Sekunden). Die Standardeinstellung beträgt 10 Sekunden. Der Serverparameter long_query_time gilt global für alle neu aufgebauten Verbindungen in MySQL. Dies wirkt sich jedoch nicht auf Threads aus, die bereits verbunden sind. Es wird empfohlen, erneut eine Verbindung mit Azure Database for MySQL – Flexible Server über die Anwendung herzustellen. Das Neustarten des Servers kann auch dabei helfen, Threads mit älteren Werten von „long_query_time“ zu löschen und den aktualisierten Parameterwert anzuwenden.
  • log_slow_admin_statements: Bestimmt, ob Verwaltungsanweisungen (z. B. ALTER_TABLE, ANALYZE_TABLE) protokolliert werden.
  • log_queries_not_using_indexes: bestimmt, ob Abfragen, die keine Indizes verwenden, protokolliert werden.
  • log_throttle_queries_not_using_indexes: Schränkt die Anzahl der nicht indizierten Abfragen ein, die in das Protokoll für langsame Abfragen geschrieben werden können. Dieser Parameter tritt in Kraft, wenn log_queries_not_using_indexes auf ON (EIN) festgelegt ist.

Wichtig

Wenn Ihre Tabellen nicht indiziert sind, kann das Festlegen der Parameter log_queries_not_using_indexes und log_throttle_queries_not_using_indexes auf ON (EIN) die Leistung von MySQL beeinträchtigen, da alle Abfragen, die für diese nicht indizierten Tabellen ausgeführt werden, in das Protokoll für langsame Abfragen geschrieben werden.

Vollständige Beschreibungen der Parameter des Protokolls für langsame Abfragen finden Sie in der MySQL-Dokumentation zum Protokoll für langsame Abfragen.

Zugreifen auf Protokolle für langsame Abfragen

Protokolle zu langsamen Abfragen sind in die Azure Monitor-Diagnoseeinstellungen integriert. Nachdem Sie Protokolle für langsame Abfragen auf Ihrer Instanz von Azure Database for MySQL – Flexible Server aktiviert haben, können Sie diese an Azure Monitor-Protokolle, Event Hubs oder Azure Storage ausgeben. Weitere Informationen über Diagnoseeinstellungen finden Sie in der Dokumentation zu Diagnoseprotokollen. Weitere Informationen zum Aktivieren von Diagnoseeinstellungen im Azure-Portal finden Sie im Artikel zum Portal für Protokolle für langsame Abfragen.

Hinweis

Storage Premium-Konten werden nicht unterstützt, wenn Sie die Protokolle über Diagnosen und Einstellungen an Azure Storage senden.

In der folgenden Tabelle wird die Ausgabe des Protokolls für langsame Abfragen beschrieben. Je nach Ausgabemethode können die enthaltenen Felder und ihre Reihenfolge variieren.

Eigenschaft Beschreibung
TenantId Ihre Mandanten-ID
SourceSystem Azure
TimeGenerated [UTC] Zeitstempel für den Aufzeichnungsbeginn des Protokolls in UTC
Type Typ des Protokolls Immer AzureDiagnostics
SubscriptionId GUID für das Abonnement, zu dem der Server gehört
ResourceGroup Name der Ressourcengruppe, zu der der Server gehört
ResourceProvider Name des Ressourcenanbieters Immer MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Ressourcen-URI
Resource Name des Servers
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Name des Servers
start_time_t [UTC] Uhrzeit, zu der die Abfrage begann
query_time_s Gesamtzeit (in Sekunden), die die Ausführung der Abfrage gedauert hat
lock_time_s Gesamtzeit in Sekunden, während der die Abfrage gesperrt war
user_host_s Username
rows_sent_s Anzahl gesendeter Zeilen
rows_examined_s Anzahl untersuchter Zeilen
last_insert_id_s last_insert_id
insert_id_s Einfüge-ID
sql_text_s Vollständige Abfrage
server_id_s Die ID des Servers
thread_id_s Thread-ID
\_ResourceId Ressourcen-URI

Hinweis

Bei sql_text_s wird das Protokoll abgeschnitten, wenn es länger als 2.048 Zeichen ist.

Analysieren von Protokollen in Azure Monitor-Protokollen

Sobald die Protokolle für langsamen Abfragen an Azure Monitor-Protokolle über Diagnoseprotokolle weitergeleitet werden, können Sie weitere Analysen Ihrer langsamen Abfragen durchführen. Im Folgenden finden Sie einige Beispielabfragen, die Ihnen beim Einstieg helfen. Stellen Sie sicher, dass Sie die Abfragen unten mit Ihrem Servernamen aktualisieren.

  • Abfragen auf einem bestimmten Server, die länger als 10 Sekunden dauern

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    
  • Auflisten der 5 längsten Abfragen auf einem bestimmten Server

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | order by query_time_d desc
    | take 5
    
  • Zusammenfassen langsamer Abfragen nach minimaler, maximaler, durchschnittlicher Dauer und standardmäßigen Abweichungen der Abfragezeit auf einem bestimmten Server

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , 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 Resource
    
  • Diagramm der Verteilung langsamer Abfragen auf einem bestimmten Server

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count() by Resource , bin(TimeGenerated, 5m)
    | render timechart
    
  • Anzeigen von Abfragen, die länger als zehn Sekunden dauern, in allen Instanzen von Azure Database for MySQL – Flexible Server mit aktivierten Diagnoseprotokollen

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