다음을 통해 공유


CREATE RESOURCE POOL(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

SQL Server에서 리소스 관리자 리소스 풀을 만듭니다. 리소스 풀은 데이터베이스 엔진 인스턴스의 물리적 리소스(메모리, CPU 및 IO)의 하위 집합을 나타냅니다. 데이터베이스 관리자는 리소스 관리자를 사용하여 서버 리소스를 최대 64개의 리소스 풀에 배치할 수 있습니다. 일부 SQL Server 버전에서는 리소스 관리자를 사용할 수 없습니다. SQL Server버전에서 지원되는 기능 목록은 SQL Server 2016 버전에서 지원하는 기능을 참조하세요.

Transact-SQL 구문 표기 규칙

구문

CREATE RESOURCE POOL pool_name  
[ WITH  
    (  
        [ MIN_CPU_PERCENT = value ]  
        [ [ , ] MAX_CPU_PERCENT = value ]   
        [ [ , ] CAP_CPU_PERCENT = value ]   
        [ [ , ] AFFINITY {SCHEDULER =  
                  AUTO 
                | ( <scheduler_range_spec> )   
                | NUMANODE = ( <NUMA_node_range_spec> )
                } ]   
        [ [ , ] MIN_MEMORY_PERCENT = value ]  
        [ [ , ] MAX_MEMORY_PERCENT = value ]  
        [ [ , ] MIN_IOPS_PER_VOLUME = value ]  
        [ [ , ] MAX_IOPS_PER_VOLUME = value ]  
    )   
]  
[;]  
  
<scheduler_range_spec> ::=  
{ SCHED_ID | SCHED_ID TO SCHED_ID }[,...n]  
  
<NUMA_node_range_spec> ::=  
{ NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID }[,...n]  

인수

pool_name
리소스 풀에 대한 사용자 정의 이름입니다. pool_name은 영숫자로 최대 128자를 사용할 수 있으며, SQL Server의 인스턴스 내에서 중복되지 않아야 하고 식별자에 대한 규칙을 따라야 합니다.

MIN_CPU_PERCENT =value
CPU 경합이 있을 때 리소스 풀의 모든 요청에 대해 보장되는 평균 CPU 대역폭을 지정합니다. value는 기본 설정이 0인 정수입니다. 허용되는 value의 범위는 0에서 100까지입니다.

MAX_CPU_PERCENT =value
CPU 경합이 있을 때 이 리소스 풀의 모든 요청이 받는 최대 평균 CPU 대역폭을 지정합니다. value는 기본 설정이 100인 정수입니다. 허용되는 value의 범위는 1에서 100까지입니다.

CAP_CPU_PERCENT =value
적용 대상: SQL Server 2012(11.x) 이상

리소스 풀의 모든 요청에서 받을 CPU 대역폭의 하드 캡을 지정합니다. 최대 CPU 대역폭 수준을 지정된 값과 동일하게 제한합니다. value는 기본 설정이 100인 정수입니다. 허용되는 value의 범위는 1에서 100까지입니다.

AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}
적용 대상: SQL Server 2012(11.x) 이상

리소스 풀을 특정 스케줄러에 연결합니다. 기본값은 AUTO입니다.

AFFINITY SCHEDULER = (<scheduler_range_spec>)은 리소스 풀을 지정된 ID로 확인된 SQL Server 일정에 매핑합니다. 이러한 ID는 sys.dm_os_schedulers(Transact-SQL)의 scheduler_id 열에 있는 값에 매핑됩니다.

AFFINITY NUMANODE = (<NUMA_node_range_spec>)을 사용하면 리소스 풀의 선호도가 지정된 NUMA 노드 또는 노드 범위에 해당하는 물리적 CPU에 매핑되는 SQL Server 스케줄러로 설정됩니다. 다음 Transact-SQL 쿼리를 사용하여 물리적 NUMA 구성과 SQL Server 스케줄러 ID 간의 매핑을 검색할 수 있습니다.

SELECT osn.memory_node_id AS [numa_node_id], sc.cpu_id, sc.scheduler_id  
FROM sys.dm_os_nodes AS osn  
INNER JOIN sys.dm_os_schedulers AS sc   
    ON osn.node_id = sc.parent_node_id   
    AND sc.scheduler_id < 1048576;  

MIN_MEMORY_PERCENT =value
다른 리소스 풀과 공유할 수 없으며 이 리소스 풀에 예약된 최소 메모리 양을 지정합니다. value는 기본 설정이 0인 정수입니다. value의 허용 범위는 0~100입니다.

MAX_MEMORY_PERCENT =value
이 리소스 풀의 요청에서 사용할 수 있는 총 서버 메모리를 지정합니다. value는 기본 설정이 100인 정수입니다. 허용되는 value의 범위는 1에서 100까지입니다.

MIN_IOPS_PER_VOLUME =value
적용 대상: SQL Server 2014(12.x) 이상

리소스 풀에 예약할 디스크 볼륨당 최소 IOPS(초당 IO 작업)를 지정합니다. 허용되는 value의 범위는 0에서 2^31-1(2,147,483,647)까지입니다. 풀에 대한 최소 임계값이 없음을 나타내려면 0을 지정합니다. 기본값은 0입니다.

MAX_IOPS_PER_VOLUME =value
적용 대상: SQL Server 2014(12.x) 이상

리소스 풀에 대해 허용할 디스크 볼륨당 최대 IOPS(초당 IO 작업)를 지정합니다. 허용되는 value의 범위는 0에서 2^31-1(2,147,483,647)까지입니다. 풀에 대한 무제한 임계값을 설정하려면 0을 지정합니다. 기본값은 0입니다.

풀에 대한 MAX_IOPS_PER_VOLUME이 0으로 설정된 경우 풀이 전혀 제어되지 않으며, 다른 풀에 MIN_IOPS_PER_VOLUME 집합이 설정되었더라도 시스템에서 모든 IOPS를 사용할 수 있습니다. 이 경우에는 이 풀의 IO를 제어하려는 경우 이 풀에 대한 MAX_IOPS_PER_VOLUME 값을 높은 값(예를 들어, 최댓값 2^31-1)으로 설정하는 것이 좋습니다.

설명

MIN_IOPS_PER_VOLUMEMAX_IOPS_PER_VOLUME은 초당 최소 및 최대 읽기 또는 쓰기를 지정합니다. 이러한 읽기 또는 쓰기는 크기 제한이 없으며 최소 또는 최대 처리량을 나타내지 않습니다.

MAX_CPU_PERCENTMAX_MEMORY_PERCENT의 값은 MIN_CPU_PERCENTMIN_MEMORY_PERCENT의 각 값보다 크거나 같아야 합니다.

CAP_CPU_PERCENT는 풀과 연결된 워크로드가 CAP_CPU_PERCENT의 값보다 큰 값이 아닌 MAX_CPU_PERCENT 값보다 큰 CPU 용량(사용 가능한 경우)을 사용할 수 있다는 점에서 MAX_CPU_PERCENT와 다릅니다.

선호도가 설정된 각 구성 요소(스케줄러 또는 NUMA 노드)에 대한 총 CPU 비율은 100퍼센트를 초과하면 안 됩니다.

사용 권한

CONTROL SERVER 권한이 필요합니다.

예제

1. 리소스 풀을 만드는 방법을 보여 줍니다.

다음 예에서는 "bigPool"이라는 리소스 풀을 만들었습니다. 이 풀은 기본 리소스 관리자 설정을 사용합니다.

CREATE RESOURCE POOL bigPool;  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

2. CAP_CPU_PERCENT를 하드 캡으로 설정하고 AFFINITY SCHEDULER를 설정합니다.

CAP_CPU_PERCENT를 하드 캡 30%로 설정하고 AFFINITY SCHEDULER를 0-63과 128-191 범위로 설정합니다.

적용 대상: SQL Server 2012(11.x) 이상

CREATE RESOURCE POOL PoolAdmin  
WITH (  
     MIN_CPU_PERCENT = 10,  
     MAX_CPU_PERCENT = 20,  
     CAP_CPU_PERCENT = 30,  
     AFFINITY SCHEDULER = (0 TO 63, 128 TO 191),  
     MIN_MEMORY_PERCENT = 5,  
     MAX_MEMORY_PERCENT = 15  
      );  

3. MIN_IOPS_PER_VOLUME과 MAX_IOPS_PER_VOLUME을 설정합니다.

MIN_IOPS_PER_VOLUME을 20으로 설정하고 MAX_IOPS_PER_VOLUME을 100을 설정합니다. 이러한 값은 리소스 풀에 대해 제공되는 물리적 I/O 읽기 및 쓰기 작업을 제어합니다.

적용 대상: SQL Server 2014(12.x) 이상

CREATE RESOURCE POOL PoolAdmin  
WITH (  
    MIN_IOPS_PER_VOLUME = 20,  
    MAX_IOPS_PER_VOLUME = 100  
      );  

참고 항목

ALTER RESOURCE POOL(Transact-SQL)
DROP RESOURCE POOL(Transact-SQL)
CREATE WORKLOAD GROUP(Transact-SQL)
ALTER WORKLOAD GROUP(Transact-SQL)
DROP WORKLOAD GROUP(Transact-SQL)
ALTER RESOURCE GOVERNOR(Transact-SQL)
리소스 관리자 리소스 풀
리소스 풀 만들기