sys.dm_exec_query_optimizer_memory_gateways(Transact-SQL)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance
동시 쿼리 최적화를 제한하는 데 사용되는 리소스 세마포의 현재 상태를 반환합니다.
Column | Type | 설명 |
---|---|---|
pool_id | int | 리소스 관리자 아래의 리소스 풀 ID |
이름 | sysname | 컴파일 게이트 이름(Small Gateway, Medium Gateway, Big Gateway) |
max_count | int | 구성된 최대 동시 컴파일 수 |
active_count | int | 이 게이트의 현재 활성 컴파일 수 |
waiter_count | int | 이 게이트의 웨이터 수 |
threshold_factor | bigint | 쿼리 최적화에 사용되는 최대 메모리 부분을 정의하는 임계값 요소입니다. 작은 게이트웨이의 경우 threshold_factor 작은 게이트웨이에서 액세스하기 전에 한 쿼리에 대한 최대 최적화 프로그램 메모리 사용량을 바이트 단위로 나타냅니다. 중간 및 큰 게이트웨이의 경우 threshold_factor 이 게이트에 사용할 수 있는 총 서버 메모리의 부분을 표시합니다. 게이트에 대한 메모리 사용량 임계값을 계산할 때 수수로 사용됩니다. |
threshold | bigint | 다음 임계값 메모리(바이트)입니다. 메모리 사용량이 이 임계값에 도달하면 이 게이트웨이에 액세스하려면 쿼리가 필요합니다. 쿼리가 이 게이트웨이에 액세스할 필요가 없는 경우 "-1"입니다. |
is_active | bit | 쿼리가 현재 게이트를 통과하는 데 필요한지 여부입니다. |
사용 권한
SQL Server에는 서버에 대한 VIEW SERVER STATE 권한이 필요합니다.
Azure SQL Database에는 데이터베이스의 VIEW DATABASE STATE 권한이 필요합니다.
SQL Server 2022 이상에 대한 사용 권한
서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.
설명
SQL Server는 계층화된 게이트웨이 접근 방식을 사용하여 허용되는 동시 컴파일 수를 제한합니다. 소형, 중형 및 큰 게이트웨이를 포함하여 세 개의 게이트웨이가 사용됩니다. 게이트웨이는 더 큰 컴파일 메모리 요구 소비자에 의해 전체 메모리 리소스의 소모를 방지하는 데 도움이 됩니다.
게이트웨이 결과를 대기하면 컴파일이 지연됩니다. 컴파일 지연 외에도 제한된 요청에는 연결된 RESOURCE_SEMAPHORE_QUERY_COMPILE 대기 유형 누적이 있습니다. RESOURCE_SEMAPHORE_QUERY_COMPILE 대기 유형은 쿼리가 컴파일에 많은 양의 메모리를 사용하고 메모리가 소진되었거나 전체적으로 사용 가능한 메모리가 충분하지만 특정 게이트웨이에서 사용 가능한 단위가 소진되었음을 나타낼 수 있습니다. sys.dm_exec_query_optimizer_memory_gateways 출력을 사용하여 쿼리 실행 계획을 컴파일할 메모리가 부족한 시나리오를 해결할 수 있습니다.
예제
A. 리소스 세마포에 대한 통계 보기
이 SQL Server 인스턴스에 대한 현재 최적화 프로그램 메모리 게이트웨이 통계는 무엇인가요?
SELECT [pool_id], [name], [max_count], [active_count],
[waiter_count], [threshold_factor], [threshold],
[is_active]
FROM sys.dm_exec_query_optimizer_memory_gateways;
참고 항목
동적 관리 뷰 및 함수(Transact-SQL)
실행 관련 동적 관리 뷰 및 함수(Transact-SQL)
DBCC MEMORYSTATUS 명령을 사용하여 SQL Server 2014의 RESOURCE_SEMAPHORE_QUERY_COMPILE SQL Server 2005대규모 쿼리 컴파일 대기에서 메모리 사용량을 모니터링하는 방법