Exportieren (0) Drucken
Alle erweitern

Ressourcenverwaltung für Azure SQL-Datenbank

Letzte Aktualisierung: Februar 2015

Dieses Thema erläutert, wie Azure SQL-Datenbank die dedizierten Ressourcen der Datenbanken verwaltet, um eine möglichst gute Vorhersagbarkeit der Leistung zu erzielen. Die Anzahl der für jede Datenbank verfügbaren Ressourcen hängt von der Leistungsstufe ab, die der Datenbank zugewiesen wurde. Verwenden Sie die Informationen in diesem Thema, um die zum Steuern von Ressourcen verwendeten Mechanismen zu verstehen. Diese Informationen sind nützlich, wenn Sie Ihre Anwendung im Hinblick auf optimale Leistung entwickeln. Dieses Thema enthält empfohlene Vorgehensweisen für auftretende Probleme in jeder Kategorie.

Azure SQL-Datenbank verwendet drei verschiedene Mechanismen zur Steuerung von Ressourcen:

  • Ressourcenkontrolle

    CPU, Arbeitsspeicher, Protokollschreibvorgänge und Abfrage-IOPS unterliegen der Ressourcenkontrolle. Dieser neu eingeführte Mechanismus verhindert bzw. beendet im Gegensatz zur Durchsetzung von Höchstgrenzen und der Einschränkung die Ausführung von Abfragen nicht, sondern reiht Abfragen in Warteschlangen ein und teilt den eingereihten Abfragen Ressourcen zu, sobald sie verfügbar werden. 

  • Durchsetzung von Grenzwerten

    Höchstgrenzen werden für die Menge der Verbindungen durchgesetzt, die für eine Datenbank geöffnet sein können, sowie für die parallele Ausführung von Abfragen (Arbeitsthreads). 

  • Einschränkung

    Einschränkung tritt in dem Fall auf, in dem ein Computer, auf dem Datenbanken ausgeführt werden, eine kritische Auslastung erreicht, was zu einem potenziellen Systemausfall führen kann. Einschränkung ist der Mechanismus, der die letzte Zuflucht des Systems darstellt, mit dem es sich vor Überlastung schützt, und kommt selten vor.

Eins der Entwicklungsziele der Dienstebenen "Basic", "Standard" und "Premium" besteht darin, dass Azure SQL-Datenbank sich so verhalten soll, als würde die Datenbank auf einem eigenen Computer ausgeführt, vollkommen isoliert von anderen Datenbanken. Dieses Verhalten wird während der Ausführung von Abfragen durch Ressourcensteuerung emuliert. Wenn die aggregierte Ressourcenauslastung den der Datenbank zugewiesenen Höchstwert für die verfügbaren CPU-, Arbeitsspeicher-, Protokollschreibvorgangs- und Abfrage-IOPS-Ressourcen erreicht, stellt die Ressourcensteuerung in Ausführung befindliche Abfragen in eine Warteschlange ein und weist den eingereihten Abfragen Ressourcen in dem Maß zu, wie sie verfügbar werden.

Wie bei einem dedizierten Computer führt die Nutzung aller verfügbaren Ressourcen zu einer längeren Ausführungsdauer der aktuell ausgeführten Abfragen, was clientseitig zu Zeitüberschreitungen führen kann. Anwendungen mit aggressiver Wiederholungslogik und Anwendungen, die sehr häufig Abfragen in der Datenbank ausführen, können bei dem Versuch, neue Abfragen auszuführen, Fehler wegen nicht verfügbarer Arbeitsthreads auslösen.

Empfehlungen: Überwachen Sie die Ressourcennutzung sowie die mittlere Antwortzeit von Abfragen, wenn die Auslastung einer Datenbank sich dem Maximum annähert. Wenn Abfragen mit langer Ausführungszeit auftreten, bestehen ganz allgemein drei Optionen: 

  1. Verringern der Anzahl der bei der Datenbank eingehenden Anfragen, um Zeitüberschreitungen und eine Anhäufung von Arbeitsthreads zu vermeiden.

  2. Zuweisen einer höheren Leistungsstufe zur Datenbank.

  3. Optimieren von Abfragen, um den Ressourcenbedarf der einzelnen Abfragen zu vermindern. Weitere Informationen finden Sie im Abschnitt Abfrageoptimierung/Abfragehinweise im Artikel Leitfaden zur Leistung für Azure SQL-Datenbanken.

Azure SQL-Datenbank nutzt die Ressourcenkontrolle, indem die maximale Anzahl gleichzeitiger Arbeitsthreads (Anforderungen) und gleichzeitiger Sitzungen für jede Datenbank begrenzt wird. Der Ressourcensteuerungsmechanismus variiert je nach Leistungsstufe der Zieldatenbank. Weitere Informationen finden Sie unter Ressourcenkontrolle für Azure SQL-Datenbank.

Die Anzahl der Verbindungen mit einer SQL-Datenbank sowie die Anzahl der Anforderungen, die parallel verarbeitet werden können, kann eingeschränkt werden. Bei SQL-Datenbanken darf die Anzahl der Verbindungen mit der Datenbank größer sein als die Anzahl der parallelen Anfragen, um das Poolen von Verbindungen zu unterstützen. 

Während die Menge der verfügbaren Verbindungen von der Anwendung leicht gesteuert werden kann, ist die Menge der parallelen Anfragen sehr oft schwieriger abzuschätzen und zu steuern. Insbesondere in Spitzenlastzeiten, wenn die Anwendung entweder zu viele Anfragen sendet oder die Datenbank ihre Ressourcengrenzwerte erreicht und beginnt, aufgrund länger laufender Abfragen Arbeitsthreads anzusammeln, können Fehler auftreten.

Empfehlungen: Wenn die Anzahl der Arbeitsthreads erschöpft ist, bestehen allgemein drei Optionen:

  1. Verringern der Anzahl der bei der Datenbank eingehenden Anfragen, um eine Ansammlung von Arbeitsthreads zu vermeiden.

  2. Zuweisen einer höheren Leistungsstufe zur Datenbank, was eine größere Anzahl paralleler Anfragen ermöglicht. Weitere Informationen finden Sie unter Dienstebenen und Leistungsstufen der Azure SQL-Datenbank.

  3. Optimieren von Abfragen, um den Ressourcenbedarf der einzelnen Abfragen zu vermindern. Weitere Informationen finden Sie im Abschnitt Abfrageoptimierung/Abfragehinweise im Artikel Leitfaden zur Leistung für Azure SQL-Datenbanken.

In der folgenden Tabelle sind die Ressourcengrenzwerte aufgelistet, jenseits derer Azur SQL-Datenbank Anfragen ablehnt oder Verbindungen mit der betroffenen Ressource trennt und einen Fehler zurückgibt. Des Weiteren ist der zurückgegebene Fehlercode in der Tabelle enthalten.

 

Ressource Limit Zurückgegebener Fehlercode

Database Size

Hängt vom Datenbankkontingent ab (MAXSIZE)

40544

Transaction Duration

Status 1: 24 Stunden

Status 2: 20 Sekunden, wenn eine für einen zugrunde liegenden Systemtask erforderliche Ressource durch eine Transaktion gesperrt ist

40549

Transaction Lock Count

1 Million Sperren pro Transaktion

40550

Tempdb

Status 1: 5 GB Speicherplatz in tempdb

Status 2: 2 GB pro Transaktion in tempdb

Status 3: 20 % des gesamten Protokollspeicherplatzes in tempdb

40551

Transaction Log Length

Status 1: 2 GB pro Transaktion

Status 2: 20 % des gesamten Protokollspeicherplatzes

40552

Memory Usage

16 MB Arbeitsspeicherzuweisung für mehr als 20 Sekunden

40553

Details zu den einzelnen Fehlercodes finden Sie in Ressourcenlimits für Azure SQL-Datenbank.

Der Schweregrad einer Einschränkung entspricht einer der beiden folgenden Stufen:

  • Leichte Einschränkung: In dieser ersten Stufe werden vordefinierte Sicherheitsschwellenwerte von Computerressourcen, wie Transaktionsprotokoll, E/A und Speicher, überschritten. SQL-Datenbank wählt einen Teil der Datenbanken, die die meisten Ressourcen beanspruchen, aus und schränkt deren Aktivitäten ein. Nicht alle Datenbanken auf dem Computer unterliegen dem Einschränkungsmechanismus, sondern nur die, die die meisten Ressourcen verwenden. Eine Ressourcenverwendung unter dem definierten Schwellenwert gibt an, dass genügend Ressourcen für alle Datenbanken auf dem Server vorhanden sind.

  • Starke Einschränkung: In dieser zweiten und letzten Stufe wird ein Computer aufgrund von Überlastung deutlich beeinträchtigt. Bei der starken Einschränkung sind erst wieder neue Verbindungen mit den auf dem Computer gehosteten Datenbanken zulässig, wenn Ressourcen frei werden. Bei neuen Verbindungsversuchen gibt SQL-Datenbank Fehlermeldungen mit der Ressource zurück, bei der die Überschreitung aufgetreten ist.

Weitere Informationen zum Mechanismus der Moduleinschränkung und Empfehlungen zum Behandeln eines Einschränkungsfehlers finden Sie unter Azure SQL-Datenbankeinschränkung.

Siehe auch

Anzeigen:
© 2015 Microsoft