ALTER RESOURCE POOL(Transact-SQL)
적용 대상:SQL ServerAzure SQL Managed Instance
데이터베이스 엔진 인스턴스에 대한 기존 리소스 관리자 리소스 풀 구성을 변경합니다.
참고
Azure SQL Managed Instance의 경우 리소스 관리자 구성을 수정하려면 master
데이터베이스의 컨텍스트에 있어야 합니다.
구문
ALTER RESOURCE POOL { pool_name | [default] }
[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 | [기본값] }
기존 사용자 정의 리소스 풀 또는 기본 제공 default
리소스 풀의 이름입니다.
default
시스템 예약 단어인 DEFAULT
충돌을 방지하기 위해 ALTER RESOURCE POOL
사용하는 경우 대괄호([]
) 또는 따옴표(""
)에 있어야 합니다. 자세한 내용은 데이터베이스 식별자참조하세요.
기본 제공 리소스 풀 및 워크로드 그룹은 default
같은 모든 소문자 이름을 사용합니다. 대/소문자 구분 데이터 정렬을 사용하는 서버에서 소문자 default
사용합니다. 대/소문자를 구분하지 않는 데이터 정렬이 있는 서버는 default
, Default
및 DEFAULT
동일한 값으로 처리합니다.
MIN_CPU_PERCENT = 값
CPU 경합이 있을 때 리소스 풀의 모든 요청에 대해 보장되는 평균 CPU 대역폭을 지정합니다. value는 기본 설정이 0인 정수입니다. 허용되는 value의 범위는 0에서 100까지입니다.
MAX_CPU_PERCENT = 값
CPU 경합이 있을 때 리소스 풀의 모든 요청이 수신하는 최대 평균 CPU 대역폭을 지정합니다. value는 기본 설정이 100인 정수입니다. 허용되는 value의 범위는 1에서 100까지입니다.
CAP_CPU_PERCENT = 값
적용 대상: SQL Server 2012(11.x) 이상
리소스 풀의 모든 요청이 수신하는 CPU 대역폭의 하드 캡을 지정합니다. 최대 CPU 대역폭 수준을 지정된 값과 동일하게 제한합니다. value는 기본 설정이 100인 정수입니다. 허용되는 value의 범위는 1에서 100까지입니다.
참고
CPU 거버넌스의 통계적 특성으로 인해 CAP_CPU_PERCENT
지정된 값을 초과하는 짧은 급증이 가끔 발생할 수 있습니다.
AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}
적용 대상: SQL Server 2012(11.x) 이상
리소스 풀을 특정 스케줄러에 연결합니다. 기본값은 AUTO
.
AFFINITY SCHEDULER
<scheduler_range_spec>
지정하면 리소스 풀이 지정된 ID로 식별된 데이터베이스 엔진 스케줄러로 선호됩니다. 이러한 ID는 sys.dm_os_schedulersscheduler_id
열의 값에 매핑됩니다.
AFFINITY NUMANODE
<NUMA_node_range_spec>
지정하면 지정된 NUMA 노드 또는 노드 범위에 해당하는 논리 CPU에 매핑되는 데이터베이스 엔진 스케줄러에 리소스 풀이 선호됩니다. 다음 Transact-SQL 쿼리를 사용하여 실제 NUMA 구성과 데이터베이스 엔진 스케줄러 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는 기본 설정이 0인 정수입니다. 값 허용되는 범위는 0에서 100까지입니다.
MAX_MEMORY_PERCENT = 값
이 리소스 풀의 요청에서 사용할 수 있는 쿼리 작업 영역 메모리의 최대 양을 지정합니다. value는 기본 설정이 100인 정수입니다. 허용되는 value의 범위는 1에서 100까지입니다.
MIN_IOPS_PER_VOLUME = 값
적용 대상: SQL Server 2014(12.x) 이상
리소스 풀에 예약할 디스크 볼륨당 최소 IOPS(초당 IO 작업)를 지정합니다. 허용되는 value의 범위는 0에서 2^31-1(2,147,483,647)까지입니다. 풀에 대한 최소값을 나타내려면 0을 지정합니다. 기본값은 0입니다.
MAX_IOPS_PER_VOLUME = 값
적용 대상: SQL Server 2014(12.x) 이상
리소스 풀에 대해 허용할 디스크 볼륨당 최대 IOPS(초당 IO 작업)를 지정합니다. 허용되는 value의 범위는 0에서 2^31-1(2,147,483,647)까지입니다. 풀에 대한 IOPS 제한을 제거하려면 0을 지정합니다. 기본값은 0입니다.
풀에 대한 MAX_IOPS_PER_VOLUME
0으로 설정된 경우 풀은 IO로 제어되지 않으며 다른 풀이 MIN_IOPS_PER_VOLUME
설정된 경우에도 시스템의 모든 IOPS를 사용할 수 있습니다. 이 경우 이 풀의 MAX_IOPS_PER_VOLUME
값을 높은 숫자(예: 최대값 2^31-1)로 설정하여 이 풀을 IO로 제어하고 다른 풀에 대해 존재할 수 있는 IOPS 예약을 적용하는 것이 좋습니다.
설명
모든 리소스 풀에 대한 MIN_CPU_PERCENT
또는 MIN_MEMORY_PERCENT
합계는 100%를 초과할 수 없습니다.
MIN_IOPS_PER_VOLUME
및 MAX_IOPS_PER_VOLUME
초당 최소 및 최대 IO를 지정합니다. IO는 읽기 또는 쓰기일 수 있으며 모든 크기일 수 있습니다. 따라서 동일한 IOPS 제한으로 최소 및 최대 IO 처리량은 워크로드의 IO 크기 혼합에 따라 달라질 수 있습니다.
MAX_CPU_PERCENT
및 MAX_MEMORY_PERCENT
값은 각각 MIN_CPU_PERCENT
및 MIN_MEMORY_PERCENT
값보다 크거나 같아야 합니다.
CAP_CPU_PERCENT
풀과 연결된 워크로드가 사용 가능한 경우 MAX_CPU_PERCENT
값보다 높은 CPU 용량을 사용할 수 있지만 CAP_CPU_PERCENT
값보다 높지 않다는 MAX_CPU_PERCENT
다릅니다.
CAP_CPU_PERCENT
보다 짧은 급증이 있을 수 있지만 추가 CPU 용량을 사용할 수 있는 경우에도 워크로드는 장시간 CAP_CPU_PERCENT
초과할 수 없습니다.
선호도가 높은 각 구성 요소(스케줄러 또는 NUMA 노드)의 총 CPU 비율은 100%를 초과할 수 없습니다.
자세한 내용은 Resource Governor 및 Resource Governor 리소스 풀참조하세요.
캐시된 계획
설정에 영향을 주는 계획을 변경하면 DBCC FREEPROCCACHE (<pool_name>)
실행한 후에만 새 설정이 이전에 캐시된 계획에 적용됩니다. 여기서 <pool_name>
리소스 관리자 리소스 풀의 이름입니다.
- 여러 스케줄러에서 단일 스케줄러로
AFFINITY
변경하는 경우 병렬 계획이 직렬 모드에서 실행될 수 있으므로DBCC FREEPROCCACHE
실행할 필요가 없습니다. 그러나 이러한 계획은 직렬 계획으로 컴파일된 계획보다 덜 효율적일 수 있습니다. - 단일 스케줄러에서 여러 스케줄러로
AFFINITY
변경하는 경우DBCC FREEPROCCACHE
실행할 필요가 없습니다. 그러나 직렬 계획은 병렬로 실행할 수 없으므로 각 캐시를 지우면 병렬 처리를 사용하여 새 계획을 컴파일할 수 있습니다.
경고
둘 이상의 워크로드 그룹과 연결된 리소스 풀에서 캐시된 계획을 지우면 <pool_name>
식별된 사용자 정의 리소스 풀을 사용하는 모든 워크로드 그룹에 영향을 줍니다.
사용 권한
CONTROL SERVER
권한이 필요합니다.
예
다음 예제에서는 25%로 변경된 MAX_CPU_PERCENT
제외하고 default
풀에 대한 모든 현재 리소스 풀 설정을 유지합니다.
ALTER RESOURCE POOL [default] WITH (MAX_CPU_PERCENT = 25);
ALTER RESOURCE GOVERNOR RECONFIGURE;
다음 예제에서는 다음과 같이 adhocPool
리소스 풀을 수정합니다.
- 각각
MIN_CPU_PERCENT
및MIN_MEMORY_PERCENT
사용하여 CPU의 10%와 쿼리 작업 영역 메모리의 5%를 예약합니다. -
MAX_MEMORY_PERCENT
사용하여 15% 쿼리 작업 영역 메모리 제한을 설정합니다. - 각각
MAX_CPU_PERCENT
및CAP_CPU_PERCENT
사용하여 20% 소프트 CPU 한도를 30% 하드 CPU 한도로 설정합니다. -
AFFINITY SCHEDULER
사용하여 풀을 논리 CPU의 두 범위(0~63 및 128~191)로 Affinitize합니다.
적용 대상: SQL Server 2012(11.x) 이상
ALTER RESOURCE POOL adhocPool
WITH (
MIN_CPU_PERCENT = 10,
MAX_CPU_PERCENT = 20,
CAP_CPU_PERCENT = 30,
MIN_MEMORY_PERCENT = 5,
MAX_MEMORY_PERCENT = 15,
AFFINITY SCHEDULER = (0 TO 63, 128 TO 191)
);
ALTER RESOURCE GOVERNOR RECONFIGURE;
관련 콘텐츠
- 리소스 관리자
- 리소스 관리자 리소스 풀
- 리소스 풀 설정 변경
- 리소스 풀 만들기
- 리소스 풀 삭제
- CREATE WORKLOAD GROUP
- ALTER WORKLOAD GROUP
- 워크로드 그룹 삭제
- ALTER RESOURCE GOVERNOR