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 Serverparameterlong_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