리소스 관리자를 사용하여 백업 압축을 통해 CPU 사용량 제한(Transact-SQL)Use Resource Governor to Limit CPU Usage by Backup Compression (Transact-SQL)

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터 시작)아니요Azure SQL 데이터베이스아니요Azure SQL 데이터 웨어하우스아니요병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

기본적으로 압축을 사용하여 백업하면 CPU 사용량이 크게 늘어나고 압축 프로세스로 사용되는 추가 CPU는 동시 작업에 악영향을 줄 수 있습니다.By default, backing up using compression significantly increases CPU usage, and the additional CPU consumed by the compression process can adversely impact concurrent operations. 따라서 CPU 경합이 발생하면 CPU 사용량이Resource Governor 로 제한되는 세션에서 우선 순위가 낮은 압축 백업을 만들 수 있습니다.Therefore, you might want to create a low-priority compressed backup in a session whose CPU usage is limited byResource Governor when CPU contention occurs. 이 항목에서는 이와 같은 경우에 CPU 사용량을 제한하는 리소스 관리자 작업 그룹에 특정 SQL ServerSQL Server 사용자의 세션을 매핑하는 방법으로 이러한 세션을 분류하는 시나리오를 제공합니다.This topic presents a scenario that classifies the sessions of a particular SQL ServerSQL Server user by mapping them to a Resource Governor workload group that limits CPU usage in such cases.

중요

주어진 리소스 관리자 시나리오에서 사용자 이름, 응용 프로그램 이름을 비롯해 연결을 차별화하는 어떠한 요소라도 세션 분류의 기준이 될 수 있습니다.In a given Resource Governor scenario, session classification might be based on a user name, an application name, or anything else that can differentiate a connection. 자세한 내용은 Resource Governor Classifier FunctionResource Governor Workload Group를 참조하세요.For more information, see Resource Governor Classifier Function and Resource Governor Workload Group.

이 항목에서는 다음과 같은 시나리오를 순서대로 다룹니다. This topic contains the following set of scenarios, which are presented in sequence:

  1. 우선 순위가 낮은 작업에 대한 로그인 및 사용자 설정Setting Up a Login and User for Low-Priority Operations

  2. CPU 사용량을 제한하도록 리소스 관리자 구성Configuring Resource Governor to Limit CPU Usage

  3. 현재 세션의 분류 확인(Transact-SQL)Verifying the Classification of the Current Session (Transact-SQL)

  4. CPU가 제한된 세션을 사용하여 백업 압축Compressing Backups Using a Session with Limited CPU

우선 순위가 낮은 작업에 대한 로그인 및 사용자 설정 Setting Up a Login and User for Low-Priority Operations

이 항목의 시나리오에는 우선 순위가 낮은 SQL ServerSQL Server 로그인 및 사용자가 필요합니다.The scenario in this topic requires a low-priority SQL ServerSQL Server login and user. 사용자 이름은 이 로그인에서 실행되는 세션을 분류하고 CPU 사용량을 제한하는 리소스 관리자 작업 그룹으로 이러한 세션을 라우팅하는 데 사용됩니다.The user name will be used to classify sessions running in the login and route them to a Resource Governor workload group that limits CPU usage.

다음 절차에서는 이러한 목적에 맞게 로그인 및 사용자를 설정하는 단계를 설명하며, 그다음에는 Transact-SQLTransact-SQL 예제인 "예제 A: 로그인 및 사용자 설정(Transact-SQL)"이 제공됩니다.The following procedure describes the steps for setting up a login and user for this purpose, followed by a Transact-SQLTransact-SQL example, "Example A: Setting Up a Login and User (Transact-SQL)."

세션 분류를 위한 로그인 및 데이터베이스 사용자를 설정하려면To set up a login and database user for classifying sessions

  1. 우선 순위가 낮은 압축된 백업을 만들기 위한 SQL ServerSQL Server 로그인을 만듭니다.Create a SQL ServerSQL Server login for creating low-priority compressed backups.

    로그인을 만들려면To create a login

  2. 필요에 따라 이 로그인에 VIEW SERVER STATE를 부여합니다.Optionally, grant VIEW SERVER STATE to this login.

  3. 이 로그인의 SQL ServerSQL Server 사용자를 만듭니다.Create a SQL ServerSQL Server user for this login.

    사용자를 만들려면To create a user

  4. 이 로그인 및 사용자의 세션에서 지정된 데이터베이스를 백업하도록 하려면 해당 데이터베이스의 db_backupoperator 데이터베이스 역할에 사용자를 추가합니다.To enable sessions of this login and user to back up a given database, add the user to the db_backupoperator database role of that database. 이 사용자가 백업할 각 데이터베이스에 대해 이를 수행합니다.Do this for each database that this user will back up. 필요에 따라 다른 고정 데이터베이스 역할에 사용자를 추가합니다.Optionally, add the user to other fixed database roles.

    고정 데이터베이스 역할에 사용자를 추가하려면To add a user to a fixed database role

예 A: 로그인 및 사용자 설정(Transact-SQL)Example A: Setting Up a Login and User (Transact-SQL)

다음 예는 우선 순위가 낮은 백업을 위한 새 SQL ServerSQL Server 로그인 및 사용자를 만들도록 선택한 경우에만 해당합니다.The following example is relevant only if you choose to create a new SQL ServerSQL Server login and user for low-priority backups. 또는 적절한 기존의 로그인 및 사용자가 있는 경우 이를 사용할 수 있습니다.Alternatively, you can use an existing login and user, if an appropriate one exists.

중요

다음 예제에서는 샘플 로그인 및 사용자 이름 domain_name\MAX_CPU을 사용합니다.The following example uses a sample login and user name, domain_name\MAX_CPU. 이를 우선 순위가 낮은 압축된 백업을 만들 때 사용할 SQL ServerSQL Server 로그인 및 사용자로 대체합니다.Replace these with the names of the SQL ServerSQL Server login and user that you plan to use when creating your low-priority compressed backups.

이 예제에서는 domain_name\MAX_CPU Windows 계정의 로그인을 만든 다음 이 로그인에 VIEW SERVER STATE 권한을 부여합니다.This example creates a login for the domain_name\MAX_CPU Windows account and then grants VIEW SERVER STATE permission to the login. 이 권한을 통해 로그인 세션의 리소스 관리자 분류를 확인할 수 있습니다.This permission enables you to verify the Resource Governor classification of sessions of the login. 그런 다음 domain_name\MAX_CPU 의 사용자를 만들어 AdventureWorks2012AdventureWorks2012 샘플 데이터베이스에 대한 db_backupoperator 고정 데이터베이스 역할에 추가합니다.The example then creates a user for domain_name\MAX_CPU and adds it to the db_backupoperator fixed database role for the AdventureWorks2012AdventureWorks2012 sample database. 이 사용자 이름은 리소스 관리자 분류자 함수에 의해 사용됩니다.This user name will be used by the Resource Governor classifier function.

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

[맨 위로 이동][Top]

CPU 사용량을 제한하도록 리소스 관리자 구성 Configuring Resource Governor to Limit CPU Usage

참고

리소스 관리자가 설정되어 있는지 확인합니다.Ensure that Resource Governor is enabled. 자세한 내용은 Resource Governor 사용을 참조하세요.For more information, see Enable Resource Governor.

이 리소스 관리자 시나리오는 다음과 같은 기본 단계로 구성됩니다.In this Resource Governor scenario, configuration comprises the following basic steps:

  1. CPU 충돌이 발생하면 리소스 풀의 요청에 지정되는 최대 평균 CPU 대역폭을 제한하는 리소스 관리자 리소스 풀을 만들고 구성합니다.Create and configure a Resource Governor resource pool that limits the maximum average CPU bandwidth that will be given to requests in the resource pool when CPU contention occurs.

  2. 이 풀을 사용하는 리소스 관리자 작업 그룹을 만들고 구성합니다.Create and configure a Resource Governor workload group that uses this pool.

  3. 분류자 함수를 만듭니다. 분류자 함수는 UDF(사용자 정의 함수)로, Resource Governor는 세션을 적절한 작업 그룹으로 라우팅되도록 분류하기 위해 이 함수의 반환 값을 사용합니다.Create a classifier function, which is a user-defined function (UDF) whose return values are used by Resource Governor for classifying sessions so that they are routed to the appropriate workload group.

  4. 분류자 함수를 리소스 관리자에 등록합니다.Register the classifier function with Resource Governor.

  5. 변경 내용을 리소스 관리자 메모리 내 구성에 적용합니다.Apply the changes to the Resource Governor in-memory configuration.

참고

Resource Governor 리소스 풀, 작업 그룹 및 분류에 대한 자세한 내용은 Resource Governor를 참조하세요.For information about Resource Governor resource pools, workload groups, and classification, see Resource Governor.

이러한 단계를 위한 Transact-SQLTransact-SQL 문은 "CPU 사용량을 제한하도록 리소스 관리자를 구성하려면" 절차에 설명되어 있습니다. 그 다음에는 이 절차의 Transact-SQLTransact-SQL 예가 나옵니다.The Transact-SQLTransact-SQL statements for these steps are described in the procedure, "To configure Resource Governor for limiting CPU usage," which is followed by a Transact-SQLTransact-SQL example of the procedure.

리소스 관리자를 구성하려면(SQL Server Management Studio)To configure Resource Governor (SQL Server Management Studio)

CPU 사용량을 제한하도록 리소스 관리자를 구성하려면(Transact-SQL)To configure Resource Governor for limiting CPU usage (Transact-SQL)

  1. CREATE RESOURCE POOL 문을 실행하여 리소스 풀을 만듭니다.Issue a CREATE RESOURCE POOL statement to create a resource pool. 이 절차에 대한 예에서는 다음 구문을 사용합니다.The example for this procedure uses the following syntax:

    CREATE RESOURCE POOL pool_name WITH ( MAX_CPU_PERCENT = value );CREATE RESOURCE POOL pool_name WITH ( MAX_CPU_PERCENT = value );

    Value 는 최대 평균 CPU 대역폭의 비율을 나타내는 1에서 100까지의 정수입니다.Value is an integer from 1 to 100 that indicates the percentage of maximum average CPU bandwidth. 적절한 값은 해당 환경에 따라 달라집니다.The appropriate value depends on your environment. 이 항목의 예에서는 설명을 위해 20% 비율을 사용합니다(MAX_CPU_PERCENT = 20).For the purpose of illustration, the example in this topic uses 20% percent (MAX_CPU_PERCENT = 20.)

  2. CREATE WORKLOAD GROUP 문을 실행하여 CPU 사용량을 관리하려는 우선 순위가 낮은 작업에 대한 작업 그룹을 만듭니다.Issue a CREATE WORKLOAD GROUP statement to create a workload group for low-priority operations whose CPU usage you want to govern. 이 절차에 대한 예에서는 다음 구문을 사용합니다.The example for this procedure uses the following syntax:

    CREATE WORKLOAD GROUP group_name USING pool_name;CREATE WORKLOAD GROUP group_name USING pool_name;

  3. CREATE FUNCTION 문을 실행하여 이전 단계에서 만든 작업 그룹을 우선 순위가 낮은 로그인의 사용자에 매핑하는 분류자 함수를 만듭니다.Issue a CREATE FUNCTION statement to create a classifier function that maps the workload group created in the preceding step to the user of the low-priority login. 이 절차에 대한 예에서는 다음 구문을 사용합니다.The example for this procedure uses the following syntax:

    CREATE FUNCTION [schema_name.]function_name() RETURNS sysnameCREATE FUNCTION [schema_name.]function_name() RETURNS sysname

    WITH SCHEMABINDINGWITH SCHEMABINDING

    ASAS

    BEGINBEGIN

    DECLARE @workload_group_name AS sysnameDECLARE @workload_group_name AS sysname

    IF (SUSER_NAME() = 'user_of_low_priority_login')IF (SUSER_NAME() = 'user_of_low_priority_login')

    SET @workload_group_name = 'workload_group_name'SET @workload_group_name = 'workload_group_name'

    RETURN @workload_group_name</span><span class="sxs-lookup">RETURN @workload_group_name</span></span>

    ENDEND

    이 CREATE FUNCTION 문의 구성 요소에 대한 자세한 내용은 다음을 참조하십시오.For information about the components of this CREATE FUNCTION statement, see:

  4. ALTER RESOURCE GOVERNOR 문을 실행하여 리소스 관리자에 분류자 함수를 등록합니다.Issue an ALTER RESOURCE GOVERNOR statement to register the classifier function with Resource Governor. 이 절차에 대한 예에서는 다음 구문을 사용합니다.The example for this procedure uses the following syntax:

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

  5. 두 번째 ALTER RESOURCE GOVERNOR 문을 실행하여 다음과 같이 변경 내용을 리소스 관리자 메모리 내 구성에 적용합니다.Issue a second ALTER RESOURCE GOVERNOR statement to apply the changes to the Resource Governor in-memory configuration, as follows:

    ALTER RESOURCE GOVERNOR RECONFIGURE;  
    

예 B: 리소스 관리자 구성(Transact-SQL)Example B: Configuring Resource Governor (Transact-SQL)

다음 예에서는 하나의 트랜잭션 내에서 다음과 같은 단계를 수행합니다.The following example performs the following steps within a single transaction:

  1. pMAX_CPU_PERCENT_20 리소스 풀을 만듭니다.Creates the pMAX_CPU_PERCENT_20 resource pool.

  2. gMAX_CPU_PERCENT_20 작업 그룹을 만듭니다.Creates the gMAX_CPU_PERCENT_20 workload group.

  3. 이전 예에서 만든 사용자 이름을 사용하는 rgclassifier_MAX_CPU() 분류자 함수를 만듭니다.Creates the rgclassifier_MAX_CPU() classifier function, which uses the user name created in the preceding example.

  4. 분류자 함수를 리소스 관리자에 등록합니다.Registers the classifier function with Resource Governor.

    트랜잭션을 커밋한 후 예에서는 ALTER WORKLOAD GROUP 또는 ALTER RESOURCE POOL 문에 요청된 구성 변경 내용을 적용합니다.After committing the transaction, the example applies the configuration changes requested in the ALTER WORKLOAD GROUP or ALTER RESOURCE POOL statements.

중요

다음 예제에서는 “예제 A: 로그인 및 사용자 설정(Transact-SQL)”에서 만든 샘플 SQL ServerSQL Server 사용자의 사용자 이름인 domain_name\MAX_CPU를 사용합니다.The following example uses the user name of the sample SQL ServerSQL Server user created in "Example A: Setting Up a Login and User (Transact-SQL)," domain_name\MAX_CPU. 이 이름을 우선 순위가 낮은 압축된 백업을 만드는 데 사용할 로그인 사용자의 이름으로 대체합니다.Replace this with the name of the user of the login that you plan to use for creating low-priority compressed backups.

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

[맨 위로 이동][Top]

현재 세션의 분류 확인(Transact-SQL) Verifying the Classification of the Current Session (Transact-SQL)

필요에 따라 분류자 함수에 지정한 사용자로 로그인한 후 개체 탐색기에서 다음 SELECT 문을 실행하여 세션 분류를 확인합니다.Optionally, log in as the user that you specified in your classifier function, and verify the session classification by issuing the following SELECT statement in 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  

결과 창의 name 열에는 분류자 함수에서 지정한 작업 그룹 이름에 대한 하나 이상의 세션이 나열됩니다.In the results pane, the name column should list one or more sessions for the workload-group name that you specified in your classifier function.

참고

이 SELECT 문에서 호출하는 동적 관리 뷰에 대한 자세한 내용은 sys.dm_exec_sessions(Transact-SQL)sys.dm_resource_governor_workload_groups(Transact-SQL)를 참조하세요.For information about the dynamic management views called by this SELECT statement, see sys.dm_exec_sessions (Transact-SQL) and sys.dm_resource_governor_workload_groups (Transact-SQL).

[맨 위로 이동][Top]

CPU가 제한된 세션을 사용하여 백업 압축 Compressing Backups Using a Session with Limited CPU

최대 CPU가 제한된 세션에서 압축된 백업을 만들려면 분류자 함수에 지정된 사용자로 로그인합니다.To create a compressed backup in a session with a limited maximum CPU, log in as the user specified in your classifier function. 백업 명령에 WITH COMPRESSION( Transact-SQLTransact-SQL)을 지정하거나 백업 압축( SQL Server Management StudioSQL Server Management Studio)을 선택합니다.In your backup command, either specify WITH COMPRESSION ( Transact-SQLTransact-SQL) or select Compress backup ( SQL Server Management StudioSQL Server Management Studio). 압축된 데이터베이스 백업을 만들려면 전체 데이터베이스 백업 만들기(SQL Server)를 참조하세요.To create a compressed database backup, see Create a Full Database Backup (SQL Server).

예 C: 압축된 백업 만들기(Transact-SQL)Example C: Creating a Compressed Backup (Transact-SQL)

다음 BACKUP 예에서는 새로 형식이 지정된 백업 파일인 AdventureWorks2012AdventureWorks2012Z:\SQLServerBackups\AdvWorksData.bak데이터베이스의 압축된 전체 백업을 만듭니다.The following BACKUP example creates a compressed full backup of the AdventureWorks2012AdventureWorks2012 database in a newly formatted backup file, 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  

[맨 위로 이동][Top]

참고 항목See Also

분류자 사용자 정의 함수 만들기 및 테스트 Create and Test a Classifier User-Defined Function
Resource Governor Resource Governor