Konzepte der Ressourcenkontrolle
Sie sollten mit den folgenden drei Konzepten vertraut sein, um die Ressourcenkontrolle effizient verwenden zu können:
Ressourcenpools: Bei der Installation von SQL Server 2008 werden ein interner Ressourcenpool (internal) und ein Standardressourcenpool (default) erstellt. Die Ressourcenkontrolle unterstützt auch benutzerdefinierte Ressourcenpools.
Arbeitsauslastungsgruppen: Bei der Installation von SQL Server 2008 werden zwei Arbeitsauslastungsgruppen (interne Arbeitsauslastungsgruppe und Standardauslastungsgruppe) mit den zugehörigen Ressourcenpools erstellt. Die Ressourcenkontrolle unterstützt auch benutzerdefinierte Arbeitsauslastungsgruppen.
Klassifizierung: Es gibt interne Regeln, mit denen eingehende Anforderungen klassifiziert und an eine Arbeitsauslastungsgruppe geleitet werden. Die Ressourcenkontrolle unterstützt auch eine benutzerdefinierte Klassifizierungsfunktion für die Implementierung von Klassifizierungsregeln.
Hinweis |
---|
Dedizierte Administratorverbindungen (DACs) werden nicht über die Ressourcenkontrolle gesteuert. DAC-Abfragen, die in der internen Arbeitsauslastungsgruppe und im internen Ressourcenpool ausgeführt werden, müssen nicht klassifiziert werden. |
Im Zusammenhang mit der Ressourcenkontrolle können Sie die obigen Konzepte als Komponenten betrachten. In der folgenden Abbildung sehen Sie diese Komponenten und ihre Beziehung zueinander in der Datenbankmodulumgebung. Von der Verarbeitungsperspektive aus stellt sich der vereinfachte Ablauf wie folgt dar:
Es gibt eine eingehende Verbindung für eine Sitzung (Sitzung 1 von n).
Die Sitzung wird klassifiziert (Klassifikation).
Die Arbeitsauslastung der Sitzung wird an eine Arbeitsauslastungsgruppe, z. B. Gruppe 4, geleitet.
Die Arbeitsauslastungsgruppe verwendet den ihr zugeordneten Ressourcenpool, zum Beispiel Pool 2.
Durch den Ressourcenpool werden die von der Anwendung (zum Beispiel Anwendung 3) benötigten Ressourcen bereitgestellt und begrenzt.
Ressourcenpools
Ein Ressourcenpool (Pool) repräsentiert die physischen Ressourcen des Servers. Stellen Sie sich einen Pool als virtuelle SQL Server-Instanz innerhalb einer SQL Server-Instanz vor.
Ein Pool besteht aus zwei Teilen. Ein Teil überschneidet sich nicht mit anderen Pools, wodurch eine minimale Reservierung von Ressourcen ermöglicht wird. Der andere Teil wird gemeinsam mit anderen Pools verwendet, wodurch eine maximale Ressourcenauslastung ermöglicht wird. In dieser Version der Ressourcenkontrolle werden die Poolressourcen durch Angabe eines der folgenden Werte für jede Ressource festgelegt:
MIN bzw. MAX für die CPU
MIN bzw. MAX für den Arbeitsspeicher
MIN und MAX repräsentieren die garantierte Mindestverfügbarkeit an Ressourcen für den Pool und die maximale Größe des Pools für die einzelnen Ressourcen.
Die Summe der MIN-Werte für alle Pools darf 100 Prozent der Serverressourcen nicht übersteigen. Der MAX-Wert kann ein Wert zwischen dem MIN-Wert und 100 Prozent sein.
Falls für einen Pool ein MIN-Wert definiert wird, der nicht null (0) ist, wird der geltende MAX-Wert der anderen Pools entsprechend dem Minimum des konfigurierten MAX-Werts eines Pool sowie der Summe der MIN-Werte der anderen Pools subtrahiert von 100 Prozent angepasst.
In der folgenden Tabelle werden die obigen Konzepte veranschaulicht. Die Tabelle zeigt die Einstellungen für den internen Pool, den Standardpool und zwei benutzerdefinierte Pools. Die folgenden Formeln werden zum Berechnen der Prozentwerte für den effektiven MAX-Wert (MAX %) und den freigegebenen, d. h. gemeinsam verwendeten Teil (Shared %) herangezogen.
Min(X,Y) bedeutet den kleineren Wert von X und Y.
Sum(X) bedeutet die Summe der X-Werte in allen Pools.
Shared % insgesamt = 100 - sum(MIN %)
Effektiver MAX % = min(X,Y)
Shared % = effektiver MAX % - MIN %
Poolname |
Einstellung für MIN % |
Einstellung für MAX % |
Berechneter effektiver MAX % |
Berechneter Shared % |
Anmerkung |
---|---|---|---|---|---|
Interner Pool (internal) |
0 |
100 |
100 |
0 |
Effektiver MAX % und Shared % gelten nicht für den internen Pool. |
Standardpool (default) |
0 |
100 |
30 |
30 |
Der effektive MAX-Wert wird berechnet als: min(100,100-(20+50)) = 30. Der berechnete Shared % ist der effektive MAX - MIN = 30. |
Pool 1 |
20 |
100 |
50 |
30 |
Der effektive MAX-Wert wird berechnet als: min(100,100-50) = 50. Der berechnete Shared % ist der effektive MAX - MIN = 30. |
Pool 2 |
50 |
70 |
70 |
20 |
Der effektive MAX-Wert wird berechnet als: min(70,100-20) = 70. Der berechnete Shared % ist der effektive MAX - MIN = 20. |
Anhand der obigen Tabelle als Beispiel können wir zeigen, welche Anpassungen vorgenommen werden, wenn ein weiterer Pool erstellt wird. Dieser Pool ist Pool 3 mit einer MIN %-Einstellung von 5.
Poolname |
Einstellung für MIN % |
Einstellung für MAX % |
Berechneter effektiver MAX % |
Berechneter Shared % |
Anmerkung |
---|---|---|---|---|---|
Interner Pool (internal) |
0 |
100 |
100 |
0 |
Effektiver MAX % und Shared % gelten nicht für den internen Pool. |
Standardwert |
0 |
100 |
25 |
25 |
Der effektive MAX-Wert wird berechnet als: min(100,100-(20+50+5)) = 25. Der berechnete Shared % ist der effektive MAX - MIN = 25. |
Pool 1 |
20 |
100 |
45 |
25 |
Der effektive MAX-Wert wird berechnet als: min(100,100-55) = 45. Der berechnete Shared % ist der effektive MAX - MIN = 25. |
Pool 2 |
50 |
70 |
70 |
20 |
Der effektive MAX-Wert wird berechnet als: min(70,100-25) = 70. Der berechnete Shared % ist der effektive MAX - MIN = 20. |
Pool 3 |
5 |
100 |
30 |
25 |
Der effektive MAX-Wert wird berechnet als: min(100,100-70) = 30. Der berechnete Shared % ist der effektive MAX - MIN = 25. |
Mit dem freigegebenen Teil des Pools wird angezeigt, wohin Ressourcen verlagert werden können, sofern Ressourcen verfügbar sind. Belegte Ressourcen gehen jedoch in den angegebenen Pool über und sind nicht mehr freigegeben. Hierdurch lässt sich ggf. die Ressourcenausnutzung verbessern, wenn in einem bestimmten Pool keine Anforderungen vorliegen und somit die für diesen Pool konfigurierten Ressourcen für andere Pools freigegeben werden können.
Beispiele für extreme Poolkonfigurationen:
Alle Pools weisen Mindestwerte auf, deren Summe 100 Prozent der Serverressourcen ergibt. In diesem Fall entsprechen die Höchstwerte den Mindestwerten. Dies kommt einer Einteilung der Ressourcen in sich nicht überlappende Teile gleich, unabhängig davon, ob die Ressourcen in den einzelnen Pools tatsächlich ausgenutzt werden.
Alle Pools weisen einen Mindestwert von 0 (null) auf. Alle Pools stehen im Wettbewerb um verfügbare Ressourcen, und ihre letztendliche Größe ist abhängig von der Ressourcenbelegung in den einzelnen Pools. Andere Faktoren wie Richtlinien spielen jedoch auch eine Rolle bei der ultimativen Poolgröße.
Die Ressourcenkontrolle verfügt über zwei vordefinierte Ressourcenpools: den internen Pool und den Standardpool.
Interner Pool
Der interne Pool repräsentiert die von SQL Server belegten Ressourcen. Dieser unveränderliche Pool enthält immer nur die interne Gruppe. Die Ressourcenbelegung durch den internen Pool ist nicht eingeschränkt. Alle Arbeitsauslastungen im Pool gelten als unabdingbar für die Serverfunktion. Daher darf der interne Pool Druck auf andere Pools ausüben, selbst wenn dies zu einer Verletzung der Grenzwerte für die anderen Pools führt.
Hinweis |
---|
Die durch den internen Pool und die interne Gruppe belegten Ressourcen werden nicht von den insgesamt belegten Ressourcen abgezogen. Prozentwerte werden auf Basis der insgesamt verfügbaren Ressourcen berechnet. |
Standardpool
Der Standardpool ist der erste vordefinierte Benutzerpool. Bevor eine anderweitige Konfiguration vorgenommen wird, enthält der Standardpool nur die Standardgruppe. Der Standardpool kann nicht erstellt oder gelöscht, jedoch geändert werden. Er kann neben der Standardgruppe noch benutzerdefinierte Gruppen enthalten.
Hinweis |
---|
Die Standardgruppe kann zwar geändert, aber nicht aus dem Standardpool entfernt werden. |
Benutzerdefinierte Ressourcenpools
Die Ressourcenkontrolle stellt DDL-Anweisungen zum Erstellen, Ändern und Löschen von Ressourcenpools bereit. Weitere Informationen finden Sie unter DDL-Befehle und Systemsichten in der Ressourcenkontrolle.
Arbeitsauslastungsgruppen
Eine Arbeitsauslastungsgruppe fungiert als Container für Sitzungsanforderungen, die sich gemäß den auf die einzelnen Anforderungen angewendeten Klassifikationskriterien ähneln. Sie ermöglicht die Überwachung der aggregierten Ressourcenbelegung und die Anwendung einer einheitlichen Richtlinie auf alle Anforderungen in der Gruppe. Eine Gruppe definiert die Richtlinien für ihre Elemente.
Hinweis |
---|
Benutzerdefinierte Arbeitsauslastungsgruppen können zwischen Ressourcenpools verschoben werden. |
Die Ressourcenkontrolle verfügt über zwei vordefinierte Arbeitsauslastungsgruppen: die interne Gruppe und die Standardgruppe. Interne Gruppen können von Benutzern nicht geändert werden. Sie können jedoch überwacht werden. Anforderungen werden der Standardgruppe zugeordnet, wenn die folgenden Bedingungen erfüllt sind:
Es sind keine Kriterien zum Klassifizieren einer Anforderung vorhanden.
Es wurde versucht, die Anforderung einer nicht vorhandenen Gruppe zuzuordnen.
Ein allgemeiner Klassifizierungsfehler ist aufgetreten.
Die Ressourcenkontrolle stellt auch DDL-Anweisungen zum Erstellen, Ändern und Löschen von Arbeitsauslastungsgruppen bereit. Weitere Informationen finden Sie unter DDL-Befehle und Systemsichten in der Ressourcenkontrolle.
Klassifikation
Die Ressourcenkontrolle unterstützt die Klassifikation eingehender Sitzungen. Die Klassifikation basiert auf einer Reihe von benutzerspezifischen Kriterien, die in einer Funktion enthalten sind. Anhand der Ergebnisse der Funktionslogik kann die Ressourcenkontrolle Sitzungen in vorhandene Arbeitsauslastungsgruppen klassifizieren.
Hinweis |
---|
Die interne Arbeitsauslastungsgruppe wird mit Anforderungen gefüllt, die nur für die interne Verwendung bestimmt sind. Die zum Weiterleiten dieser Anforderungen verwendeten Kriterien können nicht geändert werden, und es können keine Anforderungen der internen Arbeitsauslastungsgruppe zugeordnet werden. |
Sie können eine Skalarfunktion schreiben, die die Logik enthält, auf deren Grundlage eingehende Sitzungen einer Arbeitsauslastungsgruppe zugewiesen werden. Bevor Sie diese Funktion verwenden können, müssen Sie folgende Aktionen ausführen:
Erstellen und registrieren Sie die Funktion mit der ALTER RESOURCE GOVERNOR-Anweisung. Weitere Informationen finden Sie unter ALTER RESOURCE GOVERNOR (Transact-SQL).
Aktualisieren Sie die Konfiguration der Ressourcenkontrolle mit der ALTER RESOURCE GOVERNOR-Anweisung und dem RECONFIGURE-Parameter.
Nachdem Sie die Funktion erstellt und die Konfigurationsänderungen übernommen haben, verwendet die Klassifizierungsfunktion der Ressourcenkontrolle den von der Funktion zurückgegebenen Arbeitsauslastungsgruppennamen, um eine neue Anforderung an die entsprechende Arbeitsauslastungsgruppe zu senden.
Wichtig |
---|
Die Clientsitzung kann in einen Timeout laufen, falls die Klassifizierungsfunktion nicht innerhalb des festgelegten Timeouts für die Anmeldung abgeschlossen wird. Da der Anmeldetimeout eine Eigenschaft des Clients ist, wird dieser Timeout vom Server nicht beachtet. Eine Klassifizierungsfunktion mit langer Laufzeit kann auf dem Server zu lang andauernden verwaisten Verbindungen führen. Daher ist es wichtig, Klassifizierungsfunktionen zu erstellen, deren Ausführung vor einem Verbindungstimeout beendet ist. |
Die benutzerdefinierte Funktion weist die folgenden Merkmale und Verhaltensweisen auf:
Die benutzerdefinierte Funktion wird für jede neue Sitzung ausgewertet, auch dann, wenn Verbindungspooling aktiviert ist.
Die benutzerdefinierte Funktion stellt einen Arbeitsauslastungsgruppenkontext für die Sitzung bereit. Nachdem die Gruppenmitgliedschaft bestimmt ist, wird die Sitzung für ihre Lebensdauer an die Arbeitsauslastungsgruppe gebunden.
Falls die benutzerdefinierte Funktion NULL, "default" oder den Namen einer nicht vorhandenen Gruppe zurückgibt, wird die Sitzung dem Kontext für die Standardarbeitsauslastungsgruppe zugeordnet. Die Sitzung wird dem Standardkontext auch zugeordnet, falls die Funktion fehlschlägt.
Die Funktion sollte für den Serverbereich (Masterdatenbank) definiert werden.
Die Bestimmung der Funktion als benutzerdefinierte Klassifizierungsfunktion wird erst nach Ausführung von ALTER RESOURCE GOVERNOR RECONFIGURE wirksam.
Es kann immer nur eine benutzerdefinierte Funktion als Klassifizierungsfunktion bestimmt werden.
Die benutzerdefinierte Klassifizierungsfunktion kann nicht gelöscht oder geändert werden. Ihr kann lediglich der Klassifizierungsstatus entzogen werden.
Falls keine benutzerdefinierte Klassifizierungsfunktion ausgewiesen wurde, werden alle Sitzungen der Standardgruppe zugeordnet.
Die von der Klassifizierungsfunktion zurückgegebene Arbeitsauslastungsgruppe liegt außerhalb des Bereichs der Schemabindungseinschränkung. So können Sie z. B. keine Tabelle löschen, aber Sie können eine Arbeitsauslastungsgruppe löschen.
Wichtig |
---|
Es wird empfohlen, die dedizierte Administratorverbindung (Dedicated Administrator Connection, DAC) auf dem Server zu aktivieren. Die DAC unterliegt nicht der Klassifizierung der Ressourcenkontrolle und kann daher zum Überwachen einer Klassifizierungsfunktion und für die entsprechende Problembehandlung verwendet werden. Weitere Informationen finden Sie unter Verwenden einer dedizierten Administratorverbindung. Wenn keine DAC für die Problembehandlung verfügbar ist, können Sie alternativ das System im Einzelbenutzermodus neu starten. Der Einzelbenutzermodus unterliegt zwar nicht der Klassifizierung, allerdings haben Sie in diesem Modus nicht die Möglichkeit, die Klassifizierung der Ressourcenkontrolle während der Ausführung zu diagnostizieren. |
Klassifizierungsprozess
Im Kontext der Ressourcenkontrolle besteht der Anmeldevorgang für eine Sitzung aus den folgenden Schritten:
Anmeldeauthentifizierung
Ausführung von LOGON-Triggern
Klassifizierung
Wenn die Klassifizierung gestartet wird, führt die Ressourcenkontrolle die Klassifizierungsfunktion aus und verwendet den von der Funktion zurückgegebenen Wert, um Anforderungen an die entsprechende Arbeitsauslastungsgruppe zu senden. Weitere Informationen finden Sie unter Überlegungen zum Schreiben einer Klassifizierungsfunktion.
Hinweis |
---|
Informationen zum Ausführen der Klassifizierungsfunktion und der LOGON-Trigger werden in sys.dm_exec_sessions und sys.dm_exec_requests verfügbar gemacht. |
Siehe auch