적용 대상:SQL Server
Azure SQL Managed Instance
리소스 관리자 분류 프로세스는 분류자 함수를 사용하여 들어오는 세션을 워크로드 그룹에 할당할 수 있습니다. 분류자 함수에는 세션을 워크로드 그룹으로 분류하기 위한 사용자 지정 논리가 포함되어 있습니다.
구성 및 모니터링 예제 및 리소스 관리자 모범 사례를 알아보려면 자습서: 리소스 관리자 구성 예제 및모범 사례를 참조하세요.
분류
리소스 관리자를 사용하면 각 새 세션이 워크로드 그룹으로 분류됩니다. 분류자는 사용자가 만드는 스칼라 사용자 정의 함수입니다. 여기에는 들어오는 세션을 워크로드 그룹에 할당하는 원하는 논리가 포함되어 있습니다. 분류자에서 반환하는 스칼라 값은 들어오는 세션에 할당할 워크로드 그룹의 이름입니다.
리소스 관리자를 사용하도록 설정하고 리소스 관리자 구성에 분류자 함수를 지정하면 함수 출력에 새 세션에 사용되는 워크로드 그룹이 결정됩니다. 그렇지 않으면 모든 사용자 세션이 워크로드 그룹으로 분류 default 됩니다.
참고 항목
internal 워크로드 그룹은 내부 시스템 요청에만 사용됩니다. 워크로드 그룹에 요청을 internal 할당하는 데 사용되는 조건을 변경할 수 없으며 요청을 워크로드 그룹으로 명시적으로 분류할 internal 수 없습니다.
분류자 함수 사용을 시작하려면 다음 단계를 완료해야 합니다.
- CREATE FUNCTION을 사용하여 데이터베이스에
master함수를 만듭니다. 함수는 스키마 바인딩을 사용해야 합니다. -
ALTER RESOURCE GOVERNOR와
CLASSIFIER_FUNCTION매개 변수를 사용하여 리소스 관리자 구성에서 함수를 참조합니다. - 를 사용하여 새 구성을 효과적으로 만듭니다
ALTER RESOURCE GOVERNOR RECONFIGURE.
Important
클라이언트에서 구성한 연결 제한 시간 내에 분류자 함수가 완료되지 않으면 클라이언트 연결 시도가 시간 초과될 수 있습니다. 연결 시간 제한이 발생하기 전에 실행을 완료하는 분류자 함수를 만드는 것이 중요합니다.
분류자 함수를 단순하게 유지합니다. 복잡하거나 시간이 많이 걸리는 논리를 사용하지 않습니다. 가능하면 분류자에서 데이터 액세스를 피합니다.
분류자 함수에는 다음과 같은 특성과 동작이 있습니다.
- 함수는 서버 범위(데이터베이스)에
master정의됩니다. - 함수는 스키마 바인딩으로 정의됩니다. 자세한 내용은 SCHEMABINDING을 참조하세요.
- 연결 풀링을 사용하는 경우에도 함수는 모든 새 세션에 대해 평가됩니다.
- 이 함수는 세션에 대한 워크로드 그룹 컨텍스트를 반환합니다. 세션은 세션의 수명 동안 분류자에서 반환된 워크로드 그룹에 할당됩니다.
- 함수가 존재하지 않는 워크로드 그룹의 이름을 반환
NULLdefault하는 경우 세션에 워크로드 그룹 컨텍스트가default제공됩니다. 어떤 이유로든 함수가default실패하는 경우에도 세션에 컨텍스트가 제공됩니다. - 문에서
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)분류자 함수를 추가하거나 제거한 후,ALTER RESOURCE GOVERNOR RECONFIGURE문을 실행해야만 변경 사항이 적용됩니다. - 한 번에 하나의 함수만 분류자로 지정할 수 있습니다.
- 함수 이름을 다른 함수의 이름으로
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)설정하는 문을 사용하여NULL분류자 상태를 제거하지 않으면 분류자 함수를 수정하거나 삭제할 수 없습니다. - 분류자 함수가 없는 경우 모든 세션이 그룹으로 분류
default됩니다. - 분류자 함수 출력에 지정된 워크로드 그룹은 스키마 바인딩 제한 범위를 벗어집니다. 예를 들어 분류자 함수에서 참조되는 테이블을 삭제할 수는 없지만 분류자에서 해당 그룹의 이름을 반환하는 경우에도 워크로드 그룹을 삭제할 수 있습니다.
DAC 활성화
문제 해결 및 진단을 위해 DAC(관리자 전용 연결)를 사전에 사용하도록 설정하고 익숙해지는 것이 좋습니다. DAC에는 리소스 관리자 분류가 적용되지 않습니다. DAC를 사용하여 리소스 관리자 구성이 오작동하고 다른 연결을 사용할 수 없게 만드는 경우에도 분류자 함수를 모니터링하고 문제를 해결할 수 있습니다. 자세한 내용은 데이터베이스 관리자에 대한 진단 연결을 참조 하세요.
DAC를 문제 해결에 사용할 수 없는 경우 단일 사용자 모드로 서버를 시작할 수 있습니다. 단일 사용자 모드 연결에는 분류가 적용되지 않지만 실행 중인 동안 리소스 관리자 분류를 진단하는 기능을 제공하지는 않습니다.
DAC를 사용하여 연결하거나 단일 사용자 모드로 연결한 후에 는 리소스 관리자 구성을 수정 하여 오작동하는 분류자 함수를 제거하거나 리소스 관리자를 사용하지 않도록 설정할 수 있습니다.
로그인 프로세스
리소스 관리자의 컨텍스트에서 세션에 대한 로그인 프로세스는 다음 단계로 구성됩니다.
- 로그인 인증.
- 로그온 트리거 실행. 로그온 트리거가 인스턴스에 있는 경우에만 발생합니다.
- 분류.
분류가 시작되면 리소스 관리자가 분류자 함수를 실행하고 함수에서 반환한 스칼라 값을 사용하여 일치하는 워크로드 그룹에 요청을 보냅니다.
sys.dm_exec_sessions 및 sys.dm_exec_requests시스템 보기를 사용하여 로그온 트리거 및 분류자 함수의 실행을 모니터링할 수 있습니다.
예시
리소스 관리자 분류자 함수는 다양한 사용자 지정 논리를 사용할 수 있습니다. 자세한 예제 및 연습은 자습서: Resource Governor 구성 예제 및 모범 사례를 참조하세요.
A. 호스트 이름
이 함수는 HOST_NAMEReports 기본 제공 시스템 함수를 사용하여 특정 호스트 이름에서 작업 그룹으로 세션을 분류합니다. 다른 모든 세션은 워크로드 그룹으로 계속 분류 default 됩니다.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (HOST_NAME() IN ('reportserver1','reportserver2'))
SET @grp_name = 'Reports';
RETURN @grp_name;
END;
GO
B. 사용자 이름
이 함수는 SUSER_SNAMEReports 기본 제공 시스템 함수를 사용하여 특정 사용자 이름 또는 서비스 계정 이름의 세션을 워크로드 그룹으로 분류합니다. 다른 모든 세션은 워크로드 그룹으로 계속 분류 default 됩니다.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (SUSER_SNAME() IN ('Reporting', 'domain/svc_reporting'))
SET @grp_name = 'Reports';
RETURN @grp_name;
END;
GO
C. 애플리케이션 이름
이 함수는 APP_NAMEAdhoc 기본 제공 시스템 함수를 사용하여 특정 애플리케이션 이름에서 작업 그룹으로 세션을 분류합니다. 다른 모든 세션은 워크로드 그룹으로 계속 분류 default 됩니다.
Important
애플리케이션 또는 사용자는 연결 문자열의 일부로 애플리케이션 이름을 제공할 수 있습니다. 사용자는 다양한 애플리케이션을 통해 연결할 수 있습니다.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (APP_NAME() IN ('Microsoft SQL Server Management Studio - Query','azdata'))
SET @grp_name = 'Adhoc';
RETURN @grp_name;
END;
GO
관련 콘텐츠
- 리소스 관리자
- 리소스 관리자 사용하도록 설정
- 리소스 관리자 리소스 풀
- 리소스 관리자 워크로드 그룹
- 템플릿 사용하여 리소스 관리자 구성
- 리소스 관리자 속성 보기 및 수정