How to: Use Resource Governor to Limit CPU Usage by Backup Compression (Transact-SQL)

Domyślnie wykonywanie kopii zapasowej przy użyciu kompresji znacznie zwiększa obciążenia PROCESORA, a dodatkowe PROCESORA przez proces kompresji może pogorszyć równoczesne wykonywanie operacji.W związku z tym zachodzi potrzeba utworzenia kopia zapasowa w sesja, których użycie PROCESORA jest ograniczona przez skompresowane priorytetem niskim Governor zasób , gdy wystąpi Rywalizacja o PROCESOR.W tym temacie przedstawiono klasyfikujący sesje określonego scenariusza SQL Server Użytkownik, mapując je do regulator zasób grupa obciążenia, ogranicza użycie PROCESORA w takich przypadkach.

Important noteImportant Note:

W danym scenariuszu zasób Governor klasyfikacji sesja może być oparta na nazwę użytkownika, nazwy aplikacji i wszelkie inne elementy, które można odróżnić połączenie.Aby uzyskać więcej informacji zobacz Uwagi dotyczące pisania funkcja klasyfikatora i Resource Governor Workload Management Scenarios.

Ten temat zawiera następujący zestaw scenariuszy, które są prezentowane w kolejności:

  1. Definiowanie identyfikator logowania i użytkownika dla operacji niski priorytet

  2. Konfigurowanie zasób Governor do Ogranicz użycie procesora CPU

  3. Weryfikowanie klasyfikacji w bieżącej sesja (języka Transact-SQL)

  4. Kompresowanie kopii zapasowych, przy użyciu sesja z ograniczeniami PROCESORA

Definiowanie identyfikator logowania i użytkownika dla operacji niski priorytet

Scenariusz, w tym temacie wymaga niskim priorytecie SQL Server Identyfikator logowania i użytkownika. Nazwa użytkownika będzie używana do klasyfikowania sesji uruchomionych w identyfikator logowania i przesłać je do grupy obciążenia zasób Governor, która ogranicza użycie PROCESORA.

W poniższej procedurze opisano kroki konfigurowania logowania i użytkownika w tym celu, po której następuje Transact-SQLprzykład "przykład A: Definiowanie identyfikator logowania i użytkownika (języka Transact-SQL). „

Aby skonfigurować użytkownika logowania i bazy danych do klasyfikowania sesji

  1. Utwórz SQL Server Logowanie do tworzenia niskim priorytecie skompresowane kopii zapasowych.

    Aby utworzyć nazwę logowania

  2. Opcjonalnie można przyznać VIEW SERVER STATE tego identyfikatora logowania.

    Aby uzyskać więcej informacji zobaczPermissions of Fixed Server Roles (Database Engine).

  3. Utwórz SQL Server Użytkownik, dla tego identyfikatora logowania.

    Aby utworzyć użytkownika

  4. Umożliwienie sesji tego identyfikatora logowania i użytkownikowi tworzyć kopię zapasową biorąc pod uwagę bazy danych, Dodaj użytkownika do rola bazy danych db_backupoperator tej bazy danych.Wykonaj tę czynność dla każdej bazy danych, który wykona kopię zapasową tego użytkownika.Opcjonalnie można dodać użytkownika do innych ról stałej bazy danych.

    Aby dodać użytkownika do stała rola bazy danych

    Aby uzyskać więcej informacji zobaczPermissions of Fixed Database Roles (Database Engine).

on error Definiowanie identyfikator logowania i użytkownika (języka Transact-SQL)

W poniższym przykładzie ma znaczenie tylko wtedy, gdy tworzysz nowy SQL Server Identyfikator logowania i użytkownika o niskim priorytecie kopii zapasowych. Można także korzystania z istniejącego identyfikatora logowania i użytkownika, jeśli występuje jeden z odpowiednich.

Important noteImportant Note:

W poniższym przykładzie użyto nazwę logowania użytkownika i próbki, nazwa_domeny\MAX_CPU.Zastąpić je z nazwami SQL Server Identyfikator logowania i użytkownika, który ma być używany podczas tworzenia swojego niskim priorytecie kompresowane kopii zapasowych.

W tym przykładzie tworzony logowania dla nazwa_domeny\MAX_CPU Windows konta, a następnie udziela VIEW SERVER STATE uprawnień do logowania się.To uprawnienie umożliwia sprawdzenie klasyfikacji zasób Governor sesji logowania.W przykładzie następnie tworzy dla użytkownika nazwa_domeny\MAX_CPU i dodaje go do roli db_backupoperator stałej bazy danych dla AdventureWorks Przykładowa baza danych. Ta nazwa użytkownika będą używane przez funkcja zasób Governor klasyfikatora.

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

[Do góry]

Konfigurowanie zasób Governor do Ogranicz użycie procesora CPU

Uwaga

Należy upewnić się, że zasób Governor jest włączona.Aby uzyskać więcej informacji zobaczHow to: Enable or Disable Resource Governor (SQL Server Management Studio).

W tym scenariuszu zasób Governor konfiguracja obejmuje następujące podstawowe kroki:

  1. Utwórz i skonfiguruj zasób Governor puli zasób, które ogranicza maksymalną Średnia przepustowość PROCESORA, jaką będzie miał na żądania w puli zasób po wystąpieniu Rywalizacja o PROCESOR.

  2. Utwórz i skonfiguruj zasób Governor grupa obciążenia używające tej puli.

  3. Utwórz Funkcja Klasyfikator, która jest zdefiniowana przez użytkownika funkcją (UDF) którego wartości zwracane są używane przez zasób Governor klasyfikacji sesji, dzięki czemu kierowane do odpowiedniego grupa obciążenia.

  4. Zarejestruj zasób Governor z funkcja klasyfikatora.

  5. Wprowadź zmiany w konfiguracja zasób Governor w pamięci.

Uwaga

Aby uzyskać informacje dotyczące zasób Governor pule zasób, grup obciążenia pracą i klasyfikacji zobacz Resource Governor Concepts.

The Transact-SQL statements for these steps are described in the procedure, "To configure zasób Governor for limiting CPU usage," which is followed by a Transact-SQL example of the procedure.

Aby skonfigurować zasób Governor (SQL Server Management Studio)

Aby skonfigurować zasób Governor ograniczania użycia PROCESORA (języka Transact-SQL)

  1. Problem TWORZENIE PULI zasób instrukcja tworzenia puli zasób.W przykładzie do wykonania tej procedury używa następującej składni:

    CREATE RESOURCE POOL pool_name Z (MAX_CPU_PERCENT = value );

    Value jest liczbą całkowitą z zakresu od 1 do 100 wskazujący procent maksymalna przepustowość PROCESORA, średnia.Odpowiednią wartość zależy od danego środowiska.W celu ich ilustracji, w przykładzie, w tym temacie użyto 20 % procent (MAX_CPU_PERCENT = 20.)

  2. Problem TWORZENIE grupa obciążenia instrukcja, aby utworzyć grupę obciążenia dla operacji niskim priorytecie użycie PROCESORA, którego chcesz regulować.W przykładzie do wykonania tej procedury używa następującej składni:

    TWORZENIE grupa obciążenia group_name ZA POMOCĄ pool_name;

  3. Problem TWORZENIE funkcja instrukcję, aby utworzyć funkcja klasyfikatora, która mapuje grupy obciążenia, utworzony w kroku poprzednim użytkownikowi logowanie niskim priorytecie.W przykładzie do wykonania tej procedury używa następującej składni:

    TWORZENIE funkcja [schema_name.function_name() Zwraca nazwa_systemu

    Z SCHEMABINDING

    JAK

    ROZPOCZĘCIE

    DECLARE @ workload_group_name AS sysname

    IF (SUSER_NAME() = "user_of_low_priority_login')

    zestaw @ workload_group_name = "workload_group_name"

    @ Workload_group_name zwrotu

    Projekt można skojarzyć z więcej niż jedno rozwiązanie.

    Aby uzyskać informacje o składnikach tej instrukcja CREATE funkcja zobacz:

  4. Problem ZMIENIA REGULATOR zasób instrukcja zarejestrować zasób Governor z funkcja klasyfikatora.W przykładzie do wykonania tej procedury używa następującej składni:

    REGULATOR zasób ZMIANY Z (CLASSIFIER_FUNCTION = schema_name. function_name);

  5. Wydaj drugiej instrukcja ALTER regulator zasób, aby zastosować zmiany w konfiguracja Resource Governor w pamięci, w następujący sposób:

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    

Retrieving the file id of a specified file Konfigurowanie zasób Governor (języka Transact-SQL)

W poniższym przykładzie wykonuje następujące czynności w ramach pojedynczej transakcji:

  1. Tworzy pMAX_CPU_PERCENT_20 Pula zasób.

  2. Tworzy gMAX_CPU_PERCENT_20 Grupa obciążenia pracą.

  3. Tworzy rgclassifier_MAX_CPU() Funkcja klasyfikatora, którego używa nazwy użytkownika utworzonego w poprzednim przykładzie.

  4. Rejestruje funkcja klasyfikatora z zasób Governor.

Po zatwierdzeniem transakcji, w przykładzie ma zastosowanie w instrukcji ALTER GROUP obciążenie PRACĄ lub ALTER POOL zasób wymagane zmiany w konfiguracja.

Important noteImportant Note:

W poniższym przykładzie użyto nazwy użytkownika próbki SQL Serverużytkownika utworzone w "przykład A: Definiowanie identyfikator logowania i użytkownika (języka Transact-SQL) "nazwa_domeny\MAX_CPU.Zastąp to nazwa użytkownika identyfikator logowania, który ma być używany do tworzenia kopii zapasowych skompresowanych niskim priorytecie.

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

[Do góry]

Weryfikowanie klasyfikacji w bieżącej sesja (języka Transact-SQL)

Opcjonalnie można zalogować się jako użytkownik, który określono w funkcja Klasyfikator i sprawdź klasyfikacji sesja, wykonując następujące czynności WYBIERZ OPCJĘ instrukcja w Eksploratorze obiektów:

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

W okienku wyniki Nazwa kolumna powinien zawierać jedną lub wiele sesji dla nazwy grupy obciążenia, określoną w oknie funkcja klasyfikatora.

Uwaga

Informacji na temat widoków dynamicznego zarządzania wywoływany przez to instrukcja SELECT, zobacz sys.dm_exec_sessions (Transact-SQL) i sys.dm_resource_governor_workload_groups (Transact-SQL).

[Do góry]

Kompresowanie kopii zapasowych, przy użyciu sesja z ograniczeniami PROCESORA

Do tworzenia, skompresowane kopia zapasowa w sesja z ograniczoną maksymalną procesora CPU, zaloguj się jako użytkownik określony w funkcja klasyfikatora.Polecenia kopia zapasowa albo określić WITH COMPRESSION)Transact-SQL) lub wybierz Kompresowanie kopia zapasowa (SQL Server Management Studio).

Aby utworzyć kopię zapasową bazy danych skompresowanych

Przykład C: Tworzenie skompresowane kopia zapasowa (języka Transact-SQL)

Poniżej WYKONYWANIE KOPII ZAPASOWEJ przykład tworzy skompresowany pełna kopia zapasowa AdventureWorks Baza danych w plik kopii zapasowej nowo sformatowanym Z:\SQLServerBackups\AdvWorksData.bak.

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

[Do góry]