728x90
반응형
dm_exec_query_memory_grants
인덱스 생성 시 RESOURCE_SEMAPHORE WAIT 이벤트 발생 시 아래 쿼리로 해당 인덱스 생성 작업에 대한 메모리 할당이 이루어 졌는지를 확인할 수 있습니다.
SELECT session_id,
((t1.requested_memory_kb)/1024.00) MemoryRequestedMB
, CASE WHEN t1.grant_time IS NULL THEN 'Waiting' ELSE 'Granted' END AS RequestStatus
, t1.timeout_sec SecondsToTerminate
, t2.[text] QueryText
FROM sys.dm_exec_query_memory_grants t1
CROSS APPLY sys.dm_exec_sql_text(t1.sql_handle) t2
만약 메모리 할당이 이루어지지 않고 Waiting 상태라면, 메모리를 늘려야 하는데 서버의 물리적인 메모리가 여유가 있는 상태라면, Min/Max Server Memory를 설정하여 조정합니다.
물리적인 메모리가 부족하다고 하면 해당 서버의 다른 데이터베이스들이 사용하는 메모리들을 반환하여 조금씩 더 사용할 수 있는 메모리 영역을 만들 수 있습니다.
데이터베이스별로 Memory Buffer Pool에서 사용되는 Page 상태를 조회
SELECT (CASE
WHEN ( [database_id] = 32767 ) THEN 'Resource Database'
ELSE Db_name (database_id)
END ) AS 'Database Name',
Sum(CASE
WHEN ( [is_modified] = 1 ) THEN 0
ELSE 1
END) AS 'Clean Page Count',
Sum(CASE
WHEN ( [is_modified] = 1 ) THEN 1
ELSE 0
END) AS 'Dirty Page Count'
FROM sys.dm_os_buffer_descriptors
GROUP BY database_id
ORDER BY DB_NAME(database_id);
728x90
반응형
'개발 > 인덱스와 통계' 카테고리의 다른 글
인덱스에 대해 이해하기 ( Index 란? ms sql ) (2) | 2022.04.06 |
---|---|
인덱스에 포함된 열 조회 (0) | 2021.06.30 |
Gathering SQL Server indexes statistics and usage information (0) | 2021.02.18 |