Verwenden des Intelligent Insights-Diagnoseprotokolls für Leistungsprobleme bei Azure SQL-Datenbank und Azure SQL Managed Instance

Gilt für: Azure SQL-Datenbank Azure SQL Managed Instance

Auf dieser Seite finden Sie Informationen zum Verwenden der von Intelligent Insights generierten Leistungsdiagnoseprotokolle für Leistungsprobleme in Azure SQL-Datenbank und Azure SQL Managed Instance, zum Format der Protokolle und zu den Daten, die sie für Ihre benutzerdefinierten Entwicklungsanforderungen enthalten. Sie können dieses Diagnoseprotokoll an Azure Monitor-Protokolle, Azure Event Hubs, Azure Storage oder eine Drittanbieterlösung für benutzerdefinierte DevOps-Warnungs- und Berichterstellungsfunktionen senden.

Hinweis

Intelligent Insights ist eine Vorschaufunktion, die in den folgenden Regionen nicht verfügbar ist: „Europa, Westen“, „Europa, Norden“, „USA, Westen 1“ und „USA, Osten 1“.

Protokollheader

Das Diagnoseprotokoll nutzt das JSON-Standardformat zum Ausgeben von Intelligent Insights-Ergebnissen. Die genaue Kategorieeigenschaft für den Zugriff auf ein Intelligent Insights-Protokoll ist der feste Wert „SQLInsights“, der nicht mit der Überwachung von Azure SQL-Datenbank mit Azure Monitor SQL Insights (Vorschau) im Zusammenhang steht.

Die Kopfzeile des Protokolls ist allgemein gehalten und besteht aus dem Zeitstempel (TimeGenerated), der Ihnen anzeigt, wann ein Eintrag erstellt wurde. Sie beinhaltet außerdem eine Ressourcen-ID (ResourceId), die auf genau die Datenbank verweist, auf die sich der Eintrag bezieht. Die Kategorie (Category), Ebene (Level) und der Vorgangsname (OperationName) sind feste Eigenschaften, deren Werte sich nicht verändern. Sie deuten darauf hin, dass ein Protokolleintrag Informationen enthält und aus Intelligent Insights (SQLInsights) stammt.

"TimeGenerated" : "2017-9-25 11:00:00", // time stamp of the log entry
"ResourceId" : "database identifier", // value points to a database resource
"Category": "SQLInsights", // fixed property
"Level" : "Informational", // fixed property
"OperationName" : "Insight", // fixed property

Problem-ID und betroffene Datenbank

Die ID zur Bestimmung des Problems (IssueId_d) bietet eine Möglichkeit zum besonderen Nachverfolgen von Leistungsproblemen bis zu ihrer Lösung. Mehrere Ereignisdatensätze in dem Protokoll, das den Status dieses Problems angibt, weisen dieselbe Problem-ID auf.

Neben der „Issue ID“ (Problem-ID) meldet das Diagnoseprotokoll den Zeitstempel des Starts (intervalStartTime_t) und Endes (intervalEndTime_t) des jeweiligen Ereignisses, das in Zusammenhang mit einem im Diagnoseprotokoll gemeldeten Problem steht.

Die Eigenschaft „Pool für elastische Datenbanken“ (elasticPoolName_s) gibt an, zu welchem Pool für elastische Datenbanken die problematische Datenbank gehört. Wenn die Datenbank nicht zu einem Pool für elastische Datenbanken gehört, hat diese Eigenschaft keinen Wert. Die Datenbank, in der ein Problem erkannt wurde, wird in der Eigenschaft „Datenbankname“ (databaseName_s) angegeben.

"intervalStartTime_t": "2017-9-25 11:00", // start of the issue reported time stamp
"intervalEndTme_t":"2017-9-25 12:00", // end of the issue reported time stamp
"elasticPoolName_s" : "", // resource elastic pool (if applicable)
"databaseName_s" : "db_name", // database name
"issueId_d" : 1525, // unique ID of the issue detected
"status_s" : "Active" // status of the issue – possible values: "Active", "Verifying", and "Complete"

Erkannte Probleme

Der nächste Abschnitt des Intelligent Insights-Leistungsprotokolls enthält Leistungsprobleme, die mithilfe integrierter künstlicher Intelligenz erkannt wurden. Die Erkenntnisse werden in den Eigenschaften im JSON-Diagnoseprotokoll angegeben. Sie bestehen aus der Kategorie eines Problems, den Auswirkungen dieses Problems, den betroffenen Abfragen und den Metriken. Möglicherweise enthalten die Erkenntniseigenschaften mehrere erkannte Leistungsprobleme.

Erkannte Leistungsprobleme werden mit der folgenden Struktur der Eigenschaft „detections_s“ gemeldet:

"detections_s" : [{
"impact" : 1 to 3, // impact of the issue detected, possible values 1-3 (1 low, 2 moderate, 3 high impact)
"category" : "Detectable performance pattern", // performance issue detected, see the table
"details": <Details outputted> // details of an issue (see the table)
}]

Erkennbare Leistungsmuster und die Details, die an das Diagnoseprotokoll ausgegeben werden, werden in der folgenden Tabelle bereitgestellt.

Erkennungskategorie

Die Eigenschaft „Category“ (Kategorie) beschreibt die Kategorie erkennbarer Leistungsmuster. In der folgenden Tabelle finden Sie alle möglichen Kategorien erkennbarer Leistungsmuster. Nähere Informationen finden Sie unter Troubleshoot database performance issues with Intelligent Insights (Behandeln von Problemen mit der Leistung mithilfe von Intelligent Insights).

Je nach erkanntem Leistungsproblem unterscheiden sich die in der Diagnoseprotokolldatei ausgegebenen Details.

Erkennbare Leistungsmuster Ausgegebene Details
Erreichen von Ressourcengrenzwerten
  • Betroffene Ressourcen
  • Abfragehashes
  • Prozentsatz des Ressourcenverbrauchs
  • Gestiegene Workload
  • Anzahl der Abfragen, deren Ausführung sich erhöht hat
  • Abfragehashes von Abfragen mit dem größten Beitrag zur Zunahme der Workload
  • Hohe Arbeitsspeicherauslastung
  • Arbeitsspeicherclerk
  • Sperren
  • Betroffene Abfragehashes
  • Blockierende Abfragehashes
  • Erhöhter Wert für „Maximaler Grad an Parallelität“
  • Abfragehashes
  • CXP-Wartezeiten
  • Wartezeiten
  • Seitenlatchkonflikt
  • Abfragehashes von Abfragen, die einen Konflikt verursachen
  • Fehlender Index
  • Abfragehashes
  • Neue Abfrage
  • Abfragehash der neuen Abfragen
  • Ungewöhnliche Statistik bei Wartezeiten
  • Ungewöhnliche Wartetypen
  • Abfragehashes
  • Abfragewartezeiten
  • tempdb-Konflikte
  • Abfragehashes von Abfragen, die einen Konflikt verursachen
  • Anteil der Abfrage an der gesamten Wartezeit aufgrund des Seitenlatchkonflikts in der Datenbank [%]
  • Mangel an DTUs im Pool für elastische Datenbanken
  • Pool für elastische Datenbanken
  • Datenbank mit dem höchsten DTU-Verbrauch
  • Prozentsatz der vom größten Consumer genutzten Pool-DTUs
  • Planregression
  • Abfragehashes
  • IDs von guten Plänen
  • IDs von schlechten Plänen
  • Änderung eines Werts der datenbankweit gültigen Konfiguration
  • Die datenbankweit gültige Konfiguration ändert sich im Vergleich mit den Standardwerten
  • Langsamer Client
  • Abfragehashes
  • Wartezeiten
  • Tarifdowngrade
  • Textbenachrichtigung
  • Auswirkung

    Die Eigenschaft „Impact“ (Auswirkung) beschreibt, inwieweit ein erkanntes Verhalten zu dem Problem mit der Datenbank beigetragen hat. Die Auswirkungen liegen in einem Bereich zwischen 1 und 3. Dabei steht 3 für den höchsten Anteil, 2 für einen mittelhohen Anteil und 1 für den niedrigsten Anteil. Der Wert von „Impact“ kann entsprechend Ihren Anforderungen als Eingabe in eine benutzerdefinierte Warnungsautomatisierung verwendet werden. Die Eigenschaft „QueryHashes“ (Abfragehashes) gibt eine Liste der Abfragehashes zurück, die von einer bestimmten Erkennung betroffen waren.

    Betroffene Abfragen

    Der nächste Abschnitt des Intelligent Insights-Protokolls enthält Informationen zu bestimmten Abfragen, die von den erkannten Leistungsproblemen betroffen waren. Diese Informationen werden als ein Array von Objekten offengelegt, das in die Eigenschaft „impact_s“ eingebettet ist. Die Eigenschaft „Impact“ (Auswirkung) besteht aus Entitäten und Metriken. Entitäten verweisen auf eine bestimmte Abfrage (Typ: Abfrage). Der eindeutige Abfragehash wird in der Eigenschaft „Value“ (Wert) angegeben. Darüber hinaus folgen auf alle offengelegten Abfragen eine Metrik und ein Wert, die zusammen auf ein erkanntes Leistungsproblem hindeuten.

    Im folgenden Protokollbeispiel wurde erkannt, dass sich die Ausführungsdauer der Abfrage mit dem Hash 0x9102EXZ4 verlängert hat (Metrik: DurationIncreaseSeconds). Der Wert von 110 Sekunden weist darauf hin, dass die Ausführung genau dieser Abfrage 110 Sekunden länger gedauert hat. Da mehrere Abfragen erkannt werden können, enthält dieser bestimmte Protokollabschnitt möglicherweise mehrere Abfrageeinträge.

    "impact" : [{
    "entity" : {
    "Type" : "Query", // type of entity - query
    "Value" : "query hash value", // for example "0x9102EXZ4" query hash value },
    "Metric" : "DurationIncreaseSeconds", // measured metric and the measurement unit (in this case seconds)
    "Value" : 110 // value of the measured metric (in this case seconds)
    }]
    

    Metriken

    Die Maßeinheit für jede gemeldete Metrik wird unter der Eigenschaft „Metric“ (Metrik) mit den möglichen Werten (Sekunden, Zahl und Prozent) angegeben. Der Wert einer gemessenen Metrik wird von der Eigenschaft „Value“ (Wert) gemeldet.

    Die Eigenschaft „DurationIncreaseSeconds“ gibt die Maßeinheit in Sekunden zurück. Die Maßeinheit „CriticalErrorCount“ stellt die Anzahl der Fehler in einer Zahl dar.

    "metric" : "DurationIncreaseSeconds", // issue metric type – possible values: DurationIncreaseSeconds, CriticalErrorCount, WaitingSeconds
    "value" : 102 // value of the measured metric (in this case seconds)
    

    Fehlerursachenanalyse und Verbesserungsempfehlungen

    Der letzte Teil des Intelligent Insights-Leistungsprotokolls bezieht sich auf die automatische Fehlerursachenanalyse der erkannten Leistungsminderung. Die Information erscheint in benutzerfreundlicher Sprache in der Eigenschaft „Fehlerursachenanalyse“ (rootCauseAnalysis_s). Das Protokoll enthält, wenn möglich, Verbesserungsempfehlungen.

    // example of reported root cause analysis of the detected performance issue, in a human-readable format
    
    "rootCauseAnalysis_s" : "High data IO caused performance to degrade. It seems that this database is missing some indexes that could help."
    

    Sie können das Intelligent Insights-Leistungsprotokoll mit Azure Monitor-Protokolle oder eine Drittanbieterlösung für benutzerdefinierte DevOps-Warnungs- und Berichterstellungsfunktionen verwenden.

    Nächste Schritte