2012. 8. 13. 18:21
실행 쿼리 memory 사용 대기 정보
2012. 8. 13. 18:21 in Monitoring
SQL SERVER 2005 이상. - 일부 컬럼은 SQL 2008 이상
메모리 사용을 대기하는 쿼리의 정보를 반환합니다.
메모리 대기를 하지 않는 쿼리는 나타나지 않으며, 이 쿼리에 실행되는 내역이 많다면 메모리 할당 대기가 많다는 의미 입니다.
-- memory used select top 50 --mem.session_id,req.group_id, -- sql 2008 이상 가능 db_name(req.database_id) as db, mem.request_time, mem.grant_time, mem.granted_memory_kb,mem.used_memory_kb, mem.required_memory_kb, mem.query_cost,mem.timeout_sec,mem.wait_time_ms as 'wait_time', object_schema_name(sql_text.objectid,sql_text.dbid) as schema_n, object_name(sql_text.objectid, sql_text.dbid) as spname, CASE WHEN req.statement_end_offset = -1 and ( (req.statement_start_offset / 2) > DATALENGTH (sql_text.text) ) THEN convert(varchar(4000), substring(isnull(sql_text.text, '') , 1, ( ( DATALENGTH (sql_text.text) - 1 )/2 ) + 1 ) ) ELSE convert(varchar(4000), substring(isnull(sql_text.text, '') , (req.statement_start_offset / 2) + 1 , (( case when req.statement_end_offset = -1 then DATALENGTH (sql_text.text) else req.statement_end_offset end - req.statement_start_offset ) /2 ) + 1) ) END as query_text, ses.login_name, ses.host_name, ses.program_name, mem.scheduler_id from sys.dm_exec_requests as req with (nolock) join sys.dm_exec_sessions as ses with (nolock) on req.session_id = ses.session_id join sys.dm_exec_query_memory_grants as mem with (nolock) on req.request_id = mem.request_id and ses.session_id = mem.session_id cross apply sys.dm_exec_sql_text(req.sql_handle) as sql_text where ses.is_user_process = 1 and wait_type <> 'WAITFOR' --and req.database_id = db_id('tiger') -- and mem.grant_time is null -- not allocation order by used_memory_kb desc
'Monitoring' 카테고리의 다른 글
Tempdb 공간 사용 확인 (0) | 2013.09.13 |
---|---|
대랑 I/O 사용 세션 쿼리 (0) | 2012.08.13 |
TEMPDB의 페이지 사용량 측정 (0) | 2012.08.13 |
모니터링::Index 생성 & Rebuild 진행 상황 (0) | 2011.12.06 |