Dela via


Använd Resource Governor för att begränsa CPU-användning med säkerhetskopieringskomprimering (Transact-SQL)

gäller för:SQL Server

Som standardinställning ökar säkerhetskopiering med komprimering CPU-användningen avsevärt, och den extra CPU som förbrukas av komprimeringsprocessen kan påverka samtidiga åtgärder negativt. Därför kanske du vill skapa en komprimerad säkerhetskopia med låg prioritet i en session vars CPU-användning begränsas av Resource Governor- när CPU-konkurrens uppstår. Det här avsnittet visar ett scenario som klassificerar sessioner för en viss SQL Server-användare genom att mappa dem till en Resource Governor-arbetsbelastningsgrupp som begränsar CPU-användningen i sådana fall.

Viktig

I ett givet Resource Governor-scenario kan sessionsklassificering baseras på ett användarnamn, ett programnamn eller något annat som kan särskilja en anslutning. Mer information finns i Resource Governor Classifier Function och Resource Governor Workload Group.

Det här avsnittet innehåller följande scenarier som visas i följd:

  1. Konfigurera inloggning och användare för Low-Priority drift

  2. Konfigurera Resource Governor för att begränsa processoranvändningen

  3. Verifiera klassificeringen av den aktuella sessionen (Transact-SQL)

  4. komprimera säkerhetskopior med hjälp av en session med begränsad CPU-

Konfigurera en inloggning och användarkonto för Low-Priority operationer

Scenariot i det här avsnittet kräver en SQL Server-inloggning med låg prioritet och användare. Användarnamnet används för att klassificera sessioner som körs i inloggningen och dirigera dem till en resursguvernörs arbetsbelastningsgrupp som begränsar CPU-användningen.

Följande procedur beskriver stegen för att konfigurera en inloggning och användare för detta ändamål, följt av ett Transact-SQL exempel, "Exempel A: Konfigurera en inloggning och användare (Transact-SQL)."

Så här konfigurerar du en inloggnings- och databasanvändare för att klassificera sessioner

  1. Skapa en SQL Server-inloggning för att skapa komprimerade säkerhetskopior med låg prioritet.

    Skapa en inloggning

  2. Du kan också bevilja VIEW SERVER STATE till den här inloggningen.

    För mer information, se BEVILJA behörigheter för databasens huvudanvändaren (Transact-SQL).

  3. Skapa en SQL Server-användare för den här inloggningen.

    Skapa en användare

  4. Om du vill aktivera sessioner för den här inloggningen och användaren för att säkerhetskopiera en viss databas lägger du till användaren i databasens db_backupoperator databasroll. Gör detta för varje databas som den här användaren säkerhetskopierar. Du kan också lägga till användaren i andra fasta databasroller.

    Om du vill lägga till en användare i en fast databasroll

    För mer information, se GRANT Databasens huvudprincipals behörigheter (Transact-SQL).

Exempel A: Konfigurera en inloggning och användare (Transact-SQL)

Följande exempel är endast relevant om du väljer att skapa en ny SQL Server-inloggning och användare för säkerhetskopiering med låg prioritet. Du kan också använda en befintlig inloggning och användare, om det finns en lämplig sådan.

Viktig

I följande exempel används ett exempel på inloggning och användarnamn, domain_name\MAX_CPU. Ersätt dessa med namnen på SQL Server-inloggningen och användaren som du planerar att använda när du skapar komprimerade säkerhetskopior med låg prioritet.

I det här exemplet skapas en inloggning för domain_name\MAX_CPU Windows-kontot och ger sedan VIEW SERVER STATE-behörighet till inloggningen. Med den här behörigheten kan du verifiera Resource Governor-klassificeringen av sessioner för inloggningen. Exemplet skapar sedan en användare för domain_name\MAX_CPU och lägger till den i db_backupoperator fast databasroll för AdventureWorks2022-exempeldatabasen. Det här användarnamnet används av funktionen Resource Governor-klassificerare.

-- 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 AdventureWorks2022 for this login  
USE AdventureWorks2022;  
CREATE USER [domain_name\MAX_CPU] FOR LOGIN [domain_name\MAX_CPU];  
EXEC sp_addrolemember 'db_backupoperator', 'domain_name\MAX_CPU';  
GO  

[Top]

Konfigurera Resource Governor för att begränsa CPU-användningen

Not

Kontrollera att Resource Governor är aktiverat. Mer information finns i Aktivera Resursstyrare.

I det här Resource Governor-scenariot består konfigurationen av följande grundläggande steg:

  1. Skapa och konfigurera en resurspool för Resource Governor som begränsar den maximala genomsnittliga CPU-bandbredden som kommer att ges till begäranden i resurspoolen när CPU-konkurrens uppstår.

  2. Skapa och konfigurera en resource governor-arbetsbelastningsgrupp som använder den här poolen.

  3. Skapa en klassificerarfunktion, som är en användardefinierad funktion (UDF) vars returvärden används av Resource Governor för att klassificera sessioner så att de dirigeras till lämplig arbetsbelastningsgrupp.

  4. Registrera klassificerarfunktionen med Resource Governor.

  5. Använd ändringarna i minnesintern konfiguration för Resource Governor.

Not

Information om resurspooler, arbetsbelastningsgrupper och klassificering för Resource Governor finns i Resource Governor.

De Transact-SQL -instruktionerna för de här stegen beskrivs i proceduren "Konfigurera Resource Governor för att begränsa CPU-användningen", vilket följs av ett Transact-SQL exempel på proceduren.

Konfigurera Resource Governor (SQL Server Management Studio)

Så här konfigurerar du Resource Governor för att begränsa CPU-användningen (Transact-SQL)

  1. Utfärda en CREATE RESOURCE POOL-instruktion för att skapa en resurspool. Exemplet för den här proceduren använder följande syntax:

    CREATE RESOURCE POOL [<pool_name>] WITH ( MAX_CPU_PERCENT = /*replace 10 with the actual value*/10 );
    

    Value är ett heltal från 1 till 100 som anger procentandelen av den maximala genomsnittliga CPU-bandbredden. Rätt värde beror på din miljö. För illustration använder exemplet i det här avsnittet 20% procent (MAX_CPU_PERCENT = 20.)

  2. Utfärda en CREATE WORKLOAD GROUP-instruktion för att skapa en arbetsbelastningsgrupp för åtgärder med låg prioritet vars CPU-användning du vill styra. Exemplet för den här proceduren använder följande syntax:

    CREATE WORKLOAD GROUP [<group_name>] USING [<pool_name>];
    
  3. Utfärda en CREATE FUNCTION-instruktion för att skapa en klassificerare som mappar arbetsbelastningsgruppen som skapades i föregående steg till användaren av lågprioriterad inloggning. Exemplet för den här proceduren använder följande syntax:

    CREATE FUNCTION [<schema_name>].[<function_name>]() RETURNS sysname  
    WITH SCHEMABINDING  
    AS  
    BEGIN  
        DECLARE @workload_group_name AS [<sysname>]  
        IF (SUSER_NAME() = '<user_of_low_priority_login>')  
        SET @workload_group_name = '<workload_group_name>'  
        RETURN @workload_group_name  
    END;
    

    Information om komponenterna i den här CREATE FUNCTION-instruktionen finns i:

  4. Utfärda en ALTER RESOURCE GOVERNOR--instruktion för att registrera klassificerarfunktionen med Resource Governor. Exemplet för den här proceduren använder följande syntax:

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [<schema_name>].[<function_name>]);
    
  5. Utfärda en andra ALTER RESOURCE GOVERNOR-instruktion för att tillämpa ändringarna i minnesintern konfiguration av Resource Governor enligt följande:

    ALTER RESOURCE GOVERNOR RECONFIGURE;  
    

Exempel B: Konfigurera Resource Governor (Transact-SQL)

I följande exempel utförs följande steg i en enda transaktion:

  1. Skapar pMAX_CPU_PERCENT_20 resurspool.

  2. Skapar gMAX_CPU_PERCENT_20 arbetsbelastningsgrupp.

  3. Skapar funktionen rgclassifier_MAX_CPU() klassificerare, som använder användarnamnet som skapades i föregående exempel.

  4. Registrerar klassificerarfunktionen med Resource Governor.

När transaktionen har slutförts tillämpar exemplet de konfigurationsändringar som begärts i ALTER WORKLOAD GROUP- eller ALTER RESOURCE POOL-satserna.

Viktig

I följande exempel används användarnamnet för SQL Server-exempelanvändaren som skapades i "Exempel A: Konfigurera en inloggning och användare (Transact-SQL)," domain_name\MAX_CPU. Ersätt detta med namnet på användaren av inloggningen som du planerar att använda för att skapa komprimerade säkerhetskopior med låg prioritet.

-- Configure Resource Governor.  
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    

[Top]

Verifiera klassificeringen av den aktuella sessionen (Transact-SQL)

Du kan också logga in som den användare som du angav i klassificerarfunktionen och verifiera sessionsklassificeringen genom att utfärda följande SELECT--instruktion i Object Explorer:

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  

I resultatpanelen bör namn kolumn lista en eller flera sessioner för arbetsbelastningsgruppnamnet som du angav i din klassificeringsfunktion.

Not

Information om dynamiska hanteringsvyer som anropas av den här SELECT-instruktionen finns i sys.dm_exec_sessions (Transact-SQL) och sys.dm_resource_governor_workload_groups (Transact-SQL).

[Överst]

Komprimera säkerhetskopior med en session med begränsad cpu

Om du vill skapa en komprimerad säkerhetskopia i en session med en begränsad maximal CPU loggar du in som användaren angav i klassificerarens funktion. I säkerhetskopieringskommandot anger du antingen WITH COMPRESSION ( Transact-SQL) eller väljer Komprimera säkerhetskopiering (SQL Server Management Studio). Information om hur du skapar en komprimerad databassäkerhetskopia finns i Skapa en fullständig databassäkerhetskopiering (SQL Server).

Exempel C: Skapa en komprimerad säkerhetskopia (Transact-SQL)

Följande BACKUP- exempel skapar en komprimerad fullständig säkerhetskopia av en databas AdventureWorks2022 i en nyformaterad säkerhetskopieringsfil Z:\SQLServerBackups\AdvWorksData.bak.

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

[Top]

Se även

Skapa och testa en klassificerare User-Defined funktion
Resource Governor