적용 대상: SQL Server 2025(17.x) 미리 보기 이상 버전
tempdb
공간 리소스 거버넌스를 활성화하면, 방대한 쿼리나 워크로드가 tempdb
에서 과도한 공간을 소비하지 않도록 하여 안정성을 높이고 중단을 방지할 수 있습니다.
SQL Server 2025(17.x) 미리 보기부터 리소스 관리자를 사용하여 워크로드 그룹에서 사용하는 총 공간의 tempdb
양을 제한할 수 있습니다. 워크로드 그룹은 애플리케이션, 사용자, 사용자 그룹 등과 연결할 수 있습니다. 요청(쿼리)이 제한을 초과하려고 하면 리소스 관리자가 워크로드 그룹 제한이 적용되었음을 나타내는 고유한 오류로 중단합니다.
실제로 여러 워크로드 간에 공유 tempdb
공간을 분할할 수 있습니다. 예를 들어 중요 업무용 애플리케이션에서 사용하는 워크로드 그룹에 대해 더 높은 제한을 설정하고 다른 모든 워크로드에서 사용하는 워크로드 그룹에 대해 default
더 낮은 제한을 설정할 수 있습니다.
단계별 구성 예제는 자습서: tempdb 공간 리소스 거버넌스를 구성하는 예제를 참조하세요.
리소스 관리자 사용 시작하기
리소스 관리자는 다양한 애플리케이션, 사용자, 사용자 그룹 등에 대해 서로 다른 tempdb
공간 제한을 설정하는 유연한 프레임워크를 제공합니다. 사용자 지정 논리에 따라 제한을 설정할 수도 있습니다.
SQL Server의 리소스 관리자를 접하는 경우 리소스 관리자 를 참조하여 해당 개념과 기능에 대해 알아보세요.
리소스 관리자 구성 연습 및 모범 사례는 자습서: 리소스 관리자 구성 예제 및 모범 사례를 참조하세요.
tempdb 공간 사용량에 대한 제한 설정
다음 두 가지 방법 중 하나로 워크로드 그룹에 의한 공간 소비를 제한 tempdb
할 수 있습니다.
인수를 사용하여
GROUP_MAX_TEMPDB_DATA_MB
설정합니다.고정 제한은 워크로드
tempdb
사용 요구 사항을 미리 알거나 크기가 변경되지 않는 경우에tempdb
유용합니다.인수를 사용하여
GROUP_MAX_TEMPDB_DATA_PERCENT
설정합니다.백분율 제한은 시간에 따른 최대 크기를
tempdb
변경할 수 있고 리소스 관리자를 다시 구성하지 않고 각 워크로드 그룹에서 사용할 수 있는 공간을 비례적으로 변경하려는tempdb
경우에 유용합니다. 예를 들어 SQL Server를 실행하는 Azure VM을 확장하고 최대tempdb
크기를tempdb
늘리면 각 워크로드 그룹에 사용할 수 있는 공간(백분율 제한)도 증가합니다.
GROUP_MAX_TEMPDB_DATA_MB
및 GROUP_MAX_TEMPDB_DATA_PERCENT
인수에 대한 자세한 내용을 보려면 CREATE WORKLOAD GROUP 또는 ALTER WORKLOAD GROUP을 참조하세요.
동일한 워크로드 그룹에 대해 고정 및 백분율 제한을 모두 지정하면 고정 한도가 백분율 제한보다 우선합니다.
지정된 SQL Server 인스턴스에서 고정된 제한, 백분율 제한 또는 공간 사용 제한 없이 워크로드 그룹을 혼합하여 사용할 수 있습니다 tempdb
.
백분율 제한 구성
백분율 제한은 데이터 파일 구성이 다음 표에 요약된 요구 사항을 충족하는 경우에만 tempdb
적용됩니다.
구성 / 설정 | 설명 | Tempdb 최대 크기(100%) | 적용율 제한 |
---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB 가 설정되지 않음- 모든 데이터 파일의 MAXSIZE 이(가) UNLIMITED 이(가) 아닙니다.- 모든 데이터 파일의 FILEGROWTH 경우 0이 아닙니다. |
tempdb 데이터 파일은 최대 크기까지 자동 증가 가능 |
모든 데이터 파일에 대한 값의 MAXSIZE 합계 |
예 |
-
GROUP_MAX_TEMPDB_DATA_MB 가 설정되지 않음- 모든 데이터 파일에 대해, MAXSIZE 는 UNLIMITED 입니다.- 모든 데이터 파일의 FILEGROWTH 경우 0입니다. |
tempdb 데이터 파일은 의도한 크기로 미리 자라며 더 이상 확장할 수 없습니다. |
모든 데이터 파일에 대한 값의 SIZE 합계 |
예 |
다른 모든 구성 | 아니오 |
다음 쿼리를 통해 현재 tempdb
데이터 파일 구성을 볼 수 있습니다.
SELECT file_id,
name,
size * 8. / 1024 AS size_mb,
IIF(max_size = -1, NULL, max_size * 8. / 1024) AS maxsize_mb,
IIF(is_percent_growth = 0, growth * 8. / 1024, NULL) AS filegrowth_mb,
IIF(is_percent_growth = 1, growth, NULL) AS filegrowth_percent
FROM sys.master_files
WHERE database_id = 2
AND
type_desc = 'ROWS';
결과 집합의 지정된 파일의 경우:
-
maxsize_mb
열이NULL
이면,MAXSIZE
는UNLIMITED
입니다. -
filegrowth_mb
0이거나filegrowth_percent
0이면FILEGROWTH
0입니다.
GROUP_MAX_TEMPDB_DATA_PERCENT
문을 설정하고 실행하지만 데이터 파일 구성이 요구 사항을 충족하지 않는 경우 문이 성공적으로 완료되고 백분율 제한이 저장되지만 적용되지는 않습니다. 이 경우 tempdb 구성 요구 사항이 충족되지 않으므로 경고 메시지 10989, 심각도 10, GROUP_MAX_TEMPDB_DATA_PERCENT 적용되지 않습니다. 오류 로그에도 메시지가 기록됩니다.
백분율 제한을 적용하려면 요구 사항을 충족하도록 데이터 파일을 다시 구성 tempdb
하고 다시 실행 ALTER RESOURCE GOVERNOR RECONFIGURE
합니다.
SIZE
, FILEGROWTH
, 및 MAXSIZE
을 구성하는 방법에 대한 자세한 정보는 ALTER DATABASE 파일 및 파일 그룹 옵션을 참조하세요.
비고
SQL Server의 새 인스턴스의 경우 데이터 파일 MAXSIZE
은 UNLIMITED
0보다 크며 FILEGROWTH
이는 백분율 제한이 효과적이지 않음을 의미합니다. 백분율 제한을 사용하려면 다음 중 하나를 수행해야 합니다.
- 데이터 파일을 원하는 크기로 미리 증가
tempdb
시키고 0으로 설정합니다FILEGROWTH
. -
MAXSIZE
각 데이터 파일의 값을 제한된 값으로 설정합니다.각
tempdb
데이터 파일 볼륨에 대해 볼륨의MAXSIZE
파일 값 합계가 볼륨에서 사용 가능한 디스크 공간보다 작거나 같은지 확인합니다.예를 들어 볼륨에 100GB의 여유 공간이 있고 두 개의
tempdb
데이터 파일이 있는 경우 각 파일을 50GB 이하로 만듭니MAXSIZE
다.
백분율 제한이 적용되고 데이터 파일을 추가, 제거 또는 크기 조정 tempdb
하는 경우 실행하여 리소스 관리자를 새로운 최대 크기 ALTER RESOURCE GOVERNOR RECONFIGURE
(100%)로 업데이트해야 합니다tempdb
.
작동 방식
이 섹션에서는 tempdb
공간 리소스 거버넌스에 대해 자세히 설명합니다.
데이터 페이지
tempdb
가 할당되거나 할당 취소될 때, 리소스 관리자는 각 워크로드 그룹에서 소비된 공간을tempdb
추적합니다.리소스 관리자를 사용하도록 설정하고
tempdb
작업 그룹에 대해 공간 소비 한도를 설정하고 워크로드 그룹에서 실행 중인 요청(쿼리)이 그룹의 총tempdb
공간 소비량을 한도 이상으로 가져오려고 하면 요청이 오류 1138, 심각도 17로 중단됩니다. ' workload-group-name'에 설정된 제한을 초과하므로 데이터베이스 'tempdb'에 대한 새 페이지를 할당할 수 없습니다.오류 1138로 요청이 중단되면
total_tempdb_data_limit_violation_count
DMV(동적 관리 뷰)의 열에 있는 값 이 1씩 증가하며tempdb_data_workload_group_limit_reached
확장 이벤트가 발생합니다.리소스 관리자는 임시 테이블, 변수(테이블 변수 포함), 테이블 반환 매개 변수, 비결정 테이블, 커서 및 쿼리 처리 중 사용량(예: 스풀, 유출, 작업 파일 및
tempdb
작업 파일)을 포함하여 워크로드 그룹에 기인할 수 있는 모든tempdb
사용량을 추적합니다.다른 워크로드 그룹의 세션이 동일한 테이블의 행을 추가, 수정 또는 제거하더라도 전역 임시 테이블
tempdb
및 비계열 테이블의 공간 사용량은 첫 번째 행을 테이블에 삽입하는 워크로드 그룹에서 고려됩니다.각 워크로드 그룹에 대해 구성된
tempdb
사용량 한도는 sys.resource_governor_workload_groups 카탈로그 뷰 및group_max_tempdb_data_mb
열에group_max_tempdb_data_percent
노출됩니다.워크로드 그룹에 의해 사용되는
tempdb
공간의 현재 사용량과 최대 사용량은 각각 및tempdb_data_space_kb
열의peak_tempdb_data_space_kb
DMV에 노출됩니다.팁 (조언)
tempdb_data_space_kb
및peak_tempdb_data_space_kb
sys.dm_resource_governor_workload_groups 열은 공간 소비에 대한tempdb
제한이 설정되지 않은 경우에도 유지 관리됩니다.처음에는 제한을 설정하지 않고 분류자 함수 및 워크로드 그룹을 만들 수 있습니다. 시간에 따라 각 그룹의 사용량을 모니터링
tempdb
하여 대표적인 사용 패턴을 설정한 다음 필요에 따라 제한을 설정합니다.Tempdb
ADR(가속 데이터베이스 복구)을 사용하도록 설정한 경우 PVS(영구 버전 저장소)를 비롯한 버전 저장소의 사용량은 여러 워크로드 그룹의 요청에서tempdb
행 버전을 사용할 수 있으므로 제어되지 않습니다.공간 사용
tempdb
량은 사용된 8KB 데이터 페이지의 수로 간주됩니다. 페이지가 데이터로 완전히 채워지지 않더라도 워크로드 그룹의 사용량에tempdb
8KB를 추가합니다.Tempdb
공간 회계는 워크로드 그룹의 수명 동안 유지 관리됩니다. 이 워크로드 그룹에 데이터가 있는 전역 임시 테이블 또는 비계정 테이블이 남아 있는tempdb
동안 워크로드 그룹을 삭제하는 경우 이러한 테이블에서 사용하는 공간은 다른 워크로드 그룹에서 고려되지 않습니다.Tempdb
공간 리소스 거버넌스는 데이터 파일의tempdb
공간을 제어하지만 기본 볼륨의 디스크 공간은 제어하지 않습니다. 데이터 파일을 의도한 크기로 미리 확장하지 않는 한,tempdb
이 위치한 볼륨의 공간은 다른 파일에 의해 사용될 수 있습니다. 데이터 파일을 늘릴tempdb
남은 공간이 없는 경우 공간 사용량에 대한tempdb
워크로드 그룹 제한에tempdb
도달하기 전에 공간이 부족할 수 있습니다.공간 리소스 거버넌스는
tempdb
데이터 파일에 적용되지만 트랜잭션 로그 파일에는 적용되지 않습니다. 트랜잭션 로그인tempdb
에서 많은 공간을 소비하지 않도록 하려면 .에서tempdb
을 사용하도록 설정합니다.
세션 수준 공간 추적과의 차이점
sys.dm_db_session_space_usage DMV는 각 세션에 대한 공간 할당 및 할당 취소 통계를 제공합니다tempdb
. 워크로드 그룹에 세션이 하나만 있더라도 이 DMV에서 제공하는 공간 사용 통계가 다음과 같은 이유로 sys.dm_resource_governor_workload_groups 보기에 제공된 통계와 정확히 일치하지 않을 수 있습니다.
- 와 달리
sys.dm_resource_governor_workload_groups
:sys.dm_db_session_space_usage
- 현재 실행 중인 작업의 공간 사용량을 반영
tempdb
하지 않습니다. 통계는sys.dm_db_session_space_usage
작업이 완료되면 업데이트됩니다. 통계는sys.dm_resource_governor_workload_groups
지속적으로 업데이트됩니다. - IAM(인덱스 할당 맵) 페이지를 추적하지 않습니다. 자세한 내용은 페이지 및 익스텐트 아키텍처 가이드를 참조하세요.
- 현재 실행 중인 작업의 공간 사용량을 반영
- 행이 삭제되거나 테이블, 인덱스 또는 파티션이 삭제되거나 잘리면 데이터 페이지가 비동기 백그라운드 프로세스에 의해 할당 취소될 수 있습니다. 이 페이지 할당 취소는 지연될 수 있습니다.
sys.dm_resource_governor_workload_groups
는 이러한 페이지 할당 취소가 발생할 때 이를 반영하며, 이러한 할당 취소를 초래한 세션이 닫혀sys.dm_db_session_space_usage
에 더 이상 존재하지 않더라도 마찬가지입니다.
tempdb 공간 리소스 거버넌스에 대한 모범 사례
공간 리소스 거버넌스를 구성 tempdb
하기 전에 다음 모범 사례를 고려합니다.
리소스 관리자에 대한 일반적인 모범 사례를 검토합니다 .
대부분의 시나리오에서는 특히
tempdb
워크로드 그룹의 경우 공간 소비 한도를 작은 값 또는 0으로 설정default
하지 않도록 합니다. 이렇게 하면 공간을tempdb
할당해야 하는 경우 많은 일반적인 작업이 실패하기 시작할 수 있습니다. 예를 들어 워크로드 그룹에 대해default
고정 또는 백분율 제한을 0으로 설정하면 SSMS(SQL Server Management Studio)에서 개체 탐색기를 열 수 없습니다.사용자 지정 워크로드 그룹과 워크로드를 전용 그룹에 배치하는 분류자 함수를 만들지 않았다면,
tempdb
사용을default
워크로드 그룹으로 제한하지 마세요. 사용자의 워크로드에서 사용할 수 없는 미사용 공간이 여전히 있는 경우tempdb
은(는) 오류 1138로 쿼리를 중단할 수 있습니다.모든 워크로드 그룹의 값 합계
GROUP_MAX_TEMPDB_DATA_MB
가 최대tempdb
크기를 초과할 수 있습니다. 예를 들어 최대tempdb
크기가 100GB인GROUP_MAX_TEMPDB_DATA_MB
경우 워크로드 그룹 A 및 워크로드 그룹 B 에 대한 제한은 각각 80GB가 될 수 있습니다.이 방법은 다른 워크로드 그룹에 대해 20GB를 유지하여 각 워크로드 그룹이 모든 공간을
tempdb
소비하는 것을 방지합니다. 동시에 작업 그룹tempdb
와 B가 동시에 많은 공간을 사용할 가능성이 없으므로 사용tempdb
가능한 공간을 계속 사용할 수 있는 경우 불필요한 쿼리 중단을 방지할 수 있습니다.마찬가지로 모든 워크로드 그룹의 값 합계
GROUP_MAX_TEMPDB_DATA_PERCENT
는 100%를 초과할 수 있습니다. 여러 그룹이 동시에 높은tempdb
사용량을 유발할 가능성이 낮다는 것을 알고 있는 경우 각 그룹에 더 많은tempdb
공간을 할당할 수 있습니다.