Sdílet prostřednictvím


Použijte Resource Governor k omezení využití procesoru pomocí komprese zálohování (Transact-SQL)

platí pro:SQL Server

Ve výchozím nastavení zálohování pomocí komprese výrazně zvyšuje využití procesoru a další procesor spotřebovaný procesem komprese může nepříznivě ovlivnit souběžné operace. Proto můžete chtít vytvořit komprimovanou zálohu s nízkou prioritou v relaci, jejíž využití procesoru je omezeno, když dojde k zatížení procesoru Správcem prostředků. Toto téma představuje scénář, který klasifikuje relace konkrétního uživatele SQL Serveru tím, že je namapuje na skupinu úloh Správce prostředků, která v takových případech omezuje využití procesoru.

Důležitý

V daném scénáři správce prostředků může být klasifikace relací založená na uživatelském jménu, názvu aplikace nebo na čemkoli jiném, co může rozlišovat připojení. Další informace najdete v tématu funkce klasifikátoru prostředků a skupiny úloh správce prostředků.

Toto téma obsahuje následující sadu scénářů, které jsou uvedeny v posloupnosti:

  1. nastavení přihlášení a uživatele pro Low-Priority Operace

  2. konfigurace správce prostředků pro omezení využití procesoru

  3. Ověření klasifikace aktuální relace (Transact-SQL)

  4. Komprese záloh pomocí relace s omezeným využitím CPU

Nastavení přihlášení a uživatele pro operace Low-Priority

Scénář v tomto tématu vyžaduje přihlášení a uživatele SQL Serveru s nízkou prioritou. Uživatelské jméno se použije ke klasifikaci relací spuštěných v přihlášení a jejich směrování do skupiny úloh Správce prostředků, která omezuje využití procesoru.

Následující postup popisuje postup nastavení přihlášení a uživatele pro tento účel a následuje Transact-SQL příklad Příklad A: Nastavení přihlášení a uživatele (Transact-SQL)."

Nastavení přihlašovacího uživatele a uživatele databáze pro klasifikaci relací

  1. Vytvořte přihlášení k SQL Serveru pro vytváření komprimovaných záloh s nízkou prioritou.

    Vytvořit přihlašovací účet

  2. Volitelně lze k tomuto přihlášení přiřadit oprávnění VIEW SERVER STATE.

    Další informace naleznete v tématu GRANT Database Principal Permissions (Transact-SQL).

  3. Vytvořte uživatele SQL Serveru pro toto přihlášení.

    Vytvoření uživatele

  4. Chcete-li povolit sezení tohoto přihlášení a uživatele pro zálohování dané databáze, přidejte uživatele do role db_backupoperator v této databázi. Proveďte to pro každou databázi, kterou bude tento uživatel zálohovat. Volitelně můžete uživatele přidat do dalších pevných databázových rolí.

    Přidání uživatele do pevné databázové role

    Další informace naleznete v tématu GRANT Database Principal Permissions (Transact-SQL).

Příklad A: Nastavení přihlášení a uživatele (Transact-SQL)

Následující příklad je relevantní pouze v případě, že se rozhodnete vytvořit nové přihlášení k SQL Serveru a uživatele pro zálohy s nízkou prioritou. Případně můžete použít existující přihlášení a uživatele, pokud existuje odpovídající.

Důležitý

Následující příklad používá ukázkové přihlašovací jméno a uživatelské jméno domain_name\MAX_CPU. Nahraďte je názvy přihlášení a uživatele SQL Serveru, kterého chcete použít při vytváření komprimovaných záloh s nízkou prioritou.

Tento příklad vytvoří přihlášení pro účet domain_name\MAX_CPU Windows a pak udělí oprávnění ZOBRAZIT STAV SERVERU pro přihlášení. Toto oprávnění vám umožňuje ověřit klasifikaci relací přihlášení pomocí Resource Governor. Příklad pak vytvoří uživatele pro domain_name\MAX_CPU a přidá ho do db_backupoperator pevné databázové role pro ukázkovou databázi AdventureWorks2022. Toto uživatelské jméno bude používat funkce klasifikátoru správce prostředků.

-- 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  

[Nahoře]

Konfigurace správce prostředků pro omezení využití procesoru

Poznámka

Ujistěte se, že je správce prostředků aktivní. Další informace najdete v tématu Povolit správce prostředků.

V tomto scénáři správce prostředků se konfigurace skládá z následujících základních kroků:

  1. Vytvořte a nakonfigurujte fond zdrojů Správce prostředků, který omezuje maximální průměrnou šířku pásma procesoru, která se bude při výskytu kolize procesoru udělovat žádostem ve fondu zdrojů.

  2. Vytvořte a nakonfigurujte skupinu úloh Správce prostředků, která tento fond používá.

  3. Vytvořte funkci klasifikátoru , což je uživatelsky definovaná funkce (UDF), jejíž návratové hodnoty Resource Governor používá pro klasifikaci relací, aby byly směrovány do příslušné skupiny úloh.

  4. Zaregistrujte funkci klasifikátoru ve správci prostředků.

  5. Použijte změny v konfiguraci správce prostředků v paměti.

Poznámka

Informace o fondech zdrojů Správce prostředků, skupinách úloh a klasifikaci najdete v tématu Správce prostředků.

Příkazy Transact-SQL pro tyto kroky jsou popsány v postupu Konfigurace správce prostředků pro omezení využití procesoru, za kterým následuje Transact-SQL příkladu postupu.

Jak konfigurovat správce prostředků (SQL Server Management Studio)

Konfigurace Správce prostředků pro omezení využití procesoru (Transact-SQL)

  1. Vydat příkaz CREATE RESOURCE POOL k vytvoření fondu zdrojů. Příklad pro tento postup používá následující syntaxi:

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

    hodnota je celé číslo od 1 do 100, které označuje procento maximální průměrné šířky pásma procesoru. Odpovídající hodnota závisí na vašem prostředí. Pro ilustraci tento příklad používá 20% procent (MAX_CPU_PERCENT = 20.)

  2. Vytvořte příkaz CREATE WORKLOAD GROUP a vytvořte skupinu úloh pro operace s nízkou prioritou, jejichž využití procesoru chcete řídit. Příklad pro tento postup používá následující syntaxi:

    CREATE WORKLOAD GROUP [<group_name>] USING [<pool_name>];
    
  3. Vydat příkaz CREATE FUNCTION k vytvoření funkce klasifikátoru, která mapuje skupinu úloh vytvořenou v předchozím kroku na uživatele s nízkou prioritou přihlášení. Příklad pro tento postup používá následující syntaxi:

    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;
    

    Informace o komponentách tohoto příkazu CREATE FUNCTION najdete tady:

  4. Vydat příkaz ALTER RESOURCE GOVERNOR pro registraci funkce klasifikátoru u Správce prostředků. Příklad pro tento postup používá následující syntaxi:

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [<schema_name>].[<function_name>]);
    
  5. Zadejte druhý příkaz ALTER RESOURCE GOVERNOR, který použije změny konfigurace správce prostředků v paměti, a to následujícím způsobem:

    ALTER RESOURCE GOVERNOR RECONFIGURE;  
    

Příklad B: Konfigurace správce prostředků (Transact-SQL)

Následující příklad provádí následující kroky v rámci jedné transakce:

  1. Vytvoří fond zdrojů pMAX_CPU_PERCENT_20.

  2. Vytvoří skupinu úloh gMAX_CPU_PERCENT_20.

  3. Vytvoří funkci klasifikátoru rgclassifier_MAX_CPU(), která používá uživatelské jméno vytvořené v předchozím příkladu.

  4. Zaregistruje funkci klasifikátoru ve správci prostředků.

Po potvrzení transakce příklad použije změny konfigurace požadované v příkazech ALTER WORKLOAD GROUP nebo ALTER RESOURCE POOL.

Důležitý

Následující příklad používá uživatelské jméno ukázkového uživatele SQL Serveru vytvořeného v části Příklad A: Nastavení přihlášení a uživatele (Transact-SQL)," domain_name\MAX_CPU. Nahraďte ho jménem uživatele přihlášení, které chcete použít k vytváření komprimovaných záloh s nízkou prioritou.

-- 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    

[Vrchol]

Ověření klasifikace aktuální relace (Transact-SQL)

Volitelně se přihlaste jako uživatel, kterého jste zadali ve funkci klasifikátoru, a ověřte klasifikaci relace zadáním následujícího příkazu SELECT v Průzkumníku objektů:

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  

V podokně výsledků by měl sloupec název obsahovat jednu nebo více relací pro název skupiny zatížení, který jste zadali ve funkci klasifikátoru.

Poznámka

Informace o zobrazeních dynamické správy volaných tímto příkazem SELECT najdete v tématu sys.dm_exec_sessions (Transact-SQL) a sys.dm_resource_governor_workload_groups (Transact-SQL).

[Top]

Komprese záloh pomocí relace s omezeným procesorem

Pokud chcete vytvořit komprimovanou zálohu v relaci s omezeným maximálním využitím CPU, přihlaste se jako uživatel zadaný ve vaší klasifikační funkci. V příkazu zálohování zadejte buď WITH COMPRESSION (Transact-SQL), nebo v SQL Server Management Studio vyberte možnost Komprimovat zálohování. Pokud chcete vytvořit komprimovanou zálohu databáze, přečtěte si téma Vytvoření úplné zálohy databáze (SQL Server).

Příklad C: Vytvoření komprimované zálohy (Transact-SQL)

Následující BACKUP příklad vytvoří komprimovanou úplnou zálohu databáze AdventureWorks2022 v nově formátovaném záložním souboru 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  

[Nahoru]

Viz také

Vytvoření a otestování klasifikátoru User-Defined funkce
Správce prostředků