Freigeben über


Verwenden der Ressourcenkontrolle zum Einschränken der CPU-Auslastung durch Sicherungskomprimierung (Transact-SQL)

Standardmäßig führt eine Sicherung mit Komprimierung zu einer erheblichen Erhöhung der CPU-Auslastung, und die zusätzliche CPU-Belastung, die durch den Komprimierungsprozess entsteht, kann sich negativ auf gleichzeitige Vorgänge auswirken. Daher können Sie eine komprimierte Sicherung mit niedriger Priorität in einer Sitzung erstellen, deren CPU-Auslastung durchResource Governor begrenzt ist, wenn ein CPU-Konflikt auftritt. In diesem Thema wird ein Szenario beschrieben, das die Sitzungen eines bestimmten SQL Server-Benutzers klassifiziert, indem er sie einer Workloadgruppe "Ressourcenkontrolle" zuordnet, die die CPU-Auslastung in solchen Fällen begrenzt.

Von Bedeutung

In einem bestimmten Szenario der Ressourcenkontrolle basiert die Sitzungsklassifizierung möglicherweise auf einem Benutzernamen, einem Anwendungsnamen oder anderen Elementen, die eine Verbindung unterscheiden können. Weitere Informationen finden Sie unter Resource Governor Classifier Function and Resource Governor Workload Group.

Dieses Thema enthält die folgenden Szenarien, die in Sequenz dargestellt werden:

  1. Einrichten einer Anmeldung und eines Benutzers für Low-Priority Vorgänge

  2. Konfigurieren der Ressourcenkontrolle zum Einschränken der CPU-Auslastung

  3. Überprüfen der Klassifizierung der aktuellen Sitzung (Transact-SQL)

  4. Komprimieren von Sicherungen mithilfe einer Sitzung mit eingeschränkter CPU

Einrichten einer Anmeldung und eines Benutzers für Low-Priority Vorgänge

Für das Szenario in diesem Thema ist eine SQL Server-Anmeldung mit niedriger Priorität und ein Benutzer erforderlich. Der Benutzername wird verwendet, um Sitzungen zu klassifizieren, die in der Anmeldung ausgeführt werden, und sie an eine Workloadgruppe des Ressourcengouverneurs weiterzuleiten, die die CPU-Auslastung begrenzt.

Im folgenden Verfahren werden die Schritte zum Einrichten einer Anmeldung und eines Benutzers für diesen Zweck beschrieben, gefolgt von einem Transact-SQL Beispiel: "Beispiel A: Einrichten einer Anmeldung und eines Benutzers (Transact-SQL)."

So richten Sie einen Anmelde- und Datenbankbenutzer für die Klassifizierung von Sitzungen ein

  1. Erstellen Sie eine SQL Server-Anmeldung zum Erstellen komprimierter Sicherungen mit niedriger Priorität.

    So erstellen Sie eine Anmeldung

  2. Geben Sie diesem Login optional die Berechtigung VIEW SERVER STATE.

    Weitere Informationen finden Sie unter GRANT-Datenbankprinzipalberechtigungen (Transact-SQL).

  3. Erstellen Sie einen SQL Server-Benutzer für diese Anmeldung.

    So erstellen Sie einen Benutzer

  4. Um Sessions dieses Logins und Benutzers zu ermöglichen, um eine bestimmte Datenbank zu sichern, fügen Sie den Benutzer zur "db_backupoperator"-Datenbankrolle dieser Datenbank hinzu. Führen Sie dies für jede Datenbank aus, die dieser Benutzer sichern wird. Fügen Sie optional den Benutzer zu anderen festen Datenbankrollen hinzu.

    So fügen Sie einen Benutzer zu einer festen Datenbankrolle hinzu

    Weitere Informationen finden Sie unter GRANT-Datenbankprinzipalberechtigungen (Transact-SQL).

Beispiel A: Einrichten einer Anmeldung und eines Benutzers (Transact-SQL)

Das folgende Beispiel ist nur relevant, wenn Sie eine neue SQL Server-Anmeldung und einen neuen Benutzer für Sicherungen mit niedriger Priorität erstellen möchten. Alternativ können Sie vorhandene Anmeldedaten und einen Benutzer verwenden, sofern ein geeigneter verfügbar ist.

Von Bedeutung

Im folgenden Beispiel wird eine Beispielanmeldung und ein Benutzername verwendet, domain_name\MAX_CPU. Ersetzen Sie diese durch die Namen der SQL Server-Anmeldung und des Benutzers, die Sie beim Erstellen ihrer komprimierten Sicherungen mit niedriger Priorität verwenden möchten.

In diesem Beispiel wird eine Anmeldung für das domain_name\MAX_CPU Windows-Konto erstellt und anschließend die VIEW SERVER STATE-Berechtigung für die Anmeldung erteilt. Mit dieser Berechtigung können Sie die Klassifizierung des Ressourcengouverneurs von Sitzungen des Logins überprüfen. Anschließend erstellt das Beispiel einen Benutzer für domain_name\MAX_CPU und fügt ihn der db_backupoperator festen Datenbankrolle für die AdventureWorks2012-Beispieldatenbank hinzu. Dieser Benutzername wird von der Klassifiziererfunktion des Ressourcengouverneurs verwendet.

-- Create a SQL Server login for low-priority operations  
USE master;  
CREATE LOGIN [domain_name\MAX_CPU] FROM WINDOWS;  
GRANT VIEW SERVER STATE TO [domain_name\MAX_CPU];  
GO  
-- Create a SQL Server user in AdventureWorks2012 for this login  
USE AdventureWorks2012;  
CREATE USER [domain_name\MAX_CPU] FOR LOGIN [domain_name\MAX_CPU];  
EXEC sp_addrolemember 'db_backupoperator', 'domain_name\MAX_CPU';  
GO  
  

[Oben]

Konfigurieren der Ressourcenkontrolle zum Einschränken der CPU-Auslastung

Hinweis

Stellen Sie sicher, dass die Ressourcensteuerung aktiviert ist. Weitere Informationen finden Sie unter Enable Resource Governor.

In diesem Szenario "Ressourcenkontrolle" umfasst die Konfiguration die folgenden grundlegenden Schritte:

  1. Erstellen und konfigurieren Sie einen Ressourcenpool für ressourcen gouverneure Ressourcen, der die maximale durchschnittliche CPU-Bandbreite begrenzt, die Anforderungen im Ressourcenpool zugewiesen wird, wenn cpu-Konsistenz auftritt.

  2. Erstellen und konfigurieren Sie eine Workloadgruppe "Ressourcenkontrolle", die diesen Pool verwendet.

  3. Erstellen Sie eine Klassifiziererfunktion, bei der es sich um eine benutzerdefinierte Funktion (UDF) handelt, deren Rückgabewerte vom Ressourcengouverneur zum Klassifizieren von Sitzungen verwendet werden, sodass sie an die entsprechende Workloadgruppe weitergeleitet werden.

  4. Registrieren Sie die Klassifiziererfunktion bei der Ressourcenkontrolle.

  5. Wenden Sie die Änderungen an der Konfiguration des Ressourcengouverneurs im Arbeitsspeicher an.

Hinweis

Informationen über die Ressourcenpools, Arbeitslastgruppen und Klassifizierung des Ressourcen-Governors finden Sie unter Resource Governor.

Die Transact-SQL Anweisungen für diese Schritte werden im Verfahren "So konfigurieren Sie die Ressourcenkontrolle für die Begrenzung der CPU-Auslastung" beschrieben, gefolgt von einem Transact-SQL Beispiel für die Prozedur.

So konfigurieren Sie die Ressourcensteuerung (SQL Server Management Studio)

So konfigurieren Sie den Ressourcengouverneur für die Einschränkung der CPU-Auslastung (Transact-SQL)

  1. Geben Sie eine CREATE RESOURCE POOL-Anweisung aus, um einen Ressourcenpool zu erstellen. Das Beispiel für diese Prozedur verwendet die folgende Syntax:

    CREATE RESOURCE POOL pool_name WITH ( MAX_CPU_PERCENT = Wert );

    Der Wert ist eine ganze Zahl zwischen 1 und 100, die den Prozentsatz der maximalen durchschnittliche CPU-Bandbreite angibt. Der entsprechende Wert hängt von Ihrer Umgebung ab. Zur Veranschaulichung verwendet das Beispiel in diesem Thema 20% Prozent (MAX_CPU_PERCENT = 20.)

  2. Stellen Sie eine CREATE WORKLOAD GROUP-Anweisung aus, um eine Workloadgruppe für Vorgänge mit niedriger Priorität zu erstellen, deren CPU-Auslastung Sie steuern möchten. Das Beispiel für diese Prozedur verwendet die folgende Syntax:

    ERSTELLEN EINER WORKLOADGRUPPE group_name MITHILFE von pool_name;

  3. Stellen Sie eine CREATE FUNCTION-Anweisung aus, um eine Klassifiziererfunktion zu erstellen, die die im vorherigen Schritt erstellte Workloadgruppe dem Benutzer der Anmeldung mit niedriger Priorität zuordnet. Das Beispiel für diese Prozedur verwendet die folgende Syntax:

    CREATE-FUNKTION [schema_name.]function_name() RETURNS sysname

    MIT SCHEMABINDUNG

    WIE

    ANFANGEN

    DECLARE @workload_group_name AS sysname

    WENN (SUSER_NAME() = 'user_of_low_priority_login')

    SET @workload_group_name = 'workload_group_name'

    RÜCKGABE @workload_group_name

    ENDE

    Informationen zu den Komponenten dieser CREATE FUNCTION-Anweisung finden Sie unter:

  4. Stellen Sie eine ALTER RESOURCE GOVERNOR-Anweisung aus, um die Klassifiziererfunktion bei Resource Governor zu registrieren. Das Beispiel für diese Prozedur verwendet die folgende Syntax:

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = schema_name.function_name);

  5. Geben Sie eine zweite ALTER RESOURCE GOVERNOR-Anweisung aus, um die Änderungen an der in-Memory-Konfiguration des Ressourcengouverneurs wie folgt anzuwenden:

    ALTER RESOURCE GOVERNOR RECONFIGURE;  
    

Beispiel B: Konfigurieren des Ressourcengouverneurs (Transact-SQL)

Im folgenden Beispiel werden die folgenden Schritte innerhalb einer einzelnen Transaktion ausgeführt:

  1. Erstellt den Ressourcenpool pMAX_CPU_PERCENT_20.

  2. Erstellt die gMAX_CPU_PERCENT_20 Arbeitslastgruppe.

  3. Erstellt die rgclassifier_MAX_CPU() Klassifiziererfunktion, die den im vorherigen Beispiel erstellten Benutzernamen verwendet.

  4. Registriert die Klassifiziererfunktion beim Ressourcen-Manager.

Nach dem Abschluss der Transaktion wendet das Beispiel die Konfigurationsänderungen an, die in den Anweisungen ALTER WORKLOAD GROUP oder ALTER RESOURCE POOL angefordert wurden.

Von Bedeutung

Im folgenden Beispiel wird der Benutzername des SQL Server-Beispielbenutzers verwendet, der in "Beispiel A: Einrichten einer Anmeldung und eines Benutzers (Transact-SQL)," domain_name\MAX_CPU erstellt wurde. Ersetzen Sie dies durch den Namen des Benutzers der Anmeldung, die Sie zum Erstellen komprimierter Sicherungen mit niedriger Priorität verwenden möchten.

-- Configure Resource Governor.  
BEGIN TRAN  
USE master;  
-- Create a resource pool that sets the MAX_CPU_PERCENT to 20%.   
CREATE RESOURCE POOL pMAX_CPU_PERCENT_20  
   WITH  
      (MAX_CPU_PERCENT = 20);  
GO  
-- Create a workload group to use this pool.   
CREATE WORKLOAD GROUP gMAX_CPU_PERCENT_20  
USING pMAX_CPU_PERCENT_20;  
GO  
-- Create a classification function.  
-- Note that any request that does not get classified goes into   
-- the 'Default' group.  
CREATE FUNCTION dbo.rgclassifier_MAX_CPU() RETURNS sysname   
WITH SCHEMABINDING  
AS  
BEGIN  
    DECLARE @workload_group_name AS sysname  
      IF (SUSER_NAME() = 'domain_name\MAX_CPU')  
          SET @workload_group_name = 'gMAX_CPU_PERCENT_20'  
    RETURN @workload_group_name  
END;  
GO  
  
-- Register the classifier function with Resource Governor.  
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_MAX_CPU);  
COMMIT TRAN;  
GO  
-- Start Resource Governor  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  
  

[Oben]

Überprüfen der Klassifizierung der aktuellen Sitzung (Transact-SQL)

Melden Sie sich optional als der Benutzer an, den Sie in der Klassifizierungsfunktion angegeben haben, und überprüfen Sie die Sitzungsklassifizierung, indem Sie die folgende SELECT-Anweisung im Objekt-Explorer ausgeben:

USE master;  
SELECT sess.session_id, sess.login_name, sess.group_id, grps.name   
FROM sys.dm_exec_sessions AS sess   
JOIN sys.dm_resource_governor_workload_groups AS grps   
    ON sess.group_id = grps.group_id  
WHERE session_id > 50;  
GO  

Im Ergebnisbereich sollte in der Namensspalte eine oder mehrere Sitzungen für den Workloadgruppennamen aufgeführt werden, den Sie in der Klassifiziererfunktion angegeben haben.

Hinweis

Informationen zu den dynamischen Verwaltungsansichten, die von dieser SELECT-Anweisung aufgerufen werden, finden Sie unter sys.dm_exec_sessions (Transact-SQL) und sys.dm_resource_governor_workload_groups (Transact-SQL).

[Oben]

Komprimieren von Sicherungen mithilfe einer Sitzung mit eingeschränkter CPU

Um eine komprimierte Sicherung in einer Sitzung mit einer begrenzten maximalen CPU zu erstellen, melden Sie sich wie der in der Klassifiziererfunktion angegebene Benutzer an. Geben Sie in Ihrem Sicherungsbefehl entweder WITH COMPRESSION (Transact-SQL) an, oder wählen Sie Sicherung komprimieren (SQL Server Management Studio) aus. Informationen zum Erstellen einer komprimierten Datenbanksicherung finden Sie unter Erstellen einer vollständigen Datenbanksicherung (SQL Server).

Beispiel C: Erstellen einer komprimierten Sicherung (Transact-SQL)

Im folgenden BACKUP-Beispiel wird eine komprimierte vollständige Sicherung der AdventureWorks2012-Datenbank in einer neu formatierten Sicherungsdatei erstellt. Z:\SQLServerBackups\AdvWorksData.bak

--Run backup statement in the gBackup session.  
BACKUP DATABASE AdventureWorks2012 TO DISK='Z:\SQLServerBackups\AdvWorksData.bak'   
WITH   
   FORMAT,   
   MEDIADESCRIPTION='AdventureWorks2012 Compressed Data Backups'  
   DESCRIPTION='First database backup on AdventureWorks2012 Compressed Data Backups media set'  
   COMPRESSION;  
GO  

[Oben]

Siehe auch

Erstellen und Testen eines Klassifizierers User-Defined Funktion
Ressourcenkontrolle