다음을 통해 공유


Tempdb 공간 리소스 거버넌스

적용 대상: 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_MBGROUP_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 가 설정되지 않음
- 모든 데이터 파일에 대해, MAXSIZEUNLIMITED입니다.
- 모든 데이터 파일의 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이면, MAXSIZEUNLIMITED입니다.
  • 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의 새 인스턴스의 경우 데이터 파일 MAXSIZEUNLIMITED 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_kbpeak_tempdb_data_space_kbsys.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 소비하는 것을 방지합니다. 동시에 작업 그룹 tempdbB가 동시에 많은 공간을 사용할 가능성이 없으므로 사용 tempdb 가능한 공간을 계속 사용할 수 있는 경우 불필요한 쿼리 중단을 방지할 수 있습니다.

    마찬가지로 모든 워크로드 그룹의 값 합계 GROUP_MAX_TEMPDB_DATA_PERCENT 는 100%를 초과할 수 있습니다. 여러 그룹이 동시에 높은 tempdb 사용량을 유발할 가능성이 낮다는 것을 알고 있는 경우 각 그룹에 더 많은 tempdb 공간을 할당할 수 있습니다.