Se mai dovesse capitarvi e volete scoprire quanta memoria è necessaria e quanta è assegnata alla query stessa Sql server mette a disposizione tutta una serie di DMO (Dynamic Management Object)
che consentono di raggiungere lo scopo :
SELECT r.session_id
,r.database_id
,r.user_id
,r.status
,st.text
,r.wait_type
,r.wait_time
,r.last_wait_type
,r.command
,es.host_name
,es.program_name
,es.nt_domain
,es.nt_user_name
,es.login_name
,mg.dop
,mg.request_time
,mg.grant_time
,mg.requested_memory_kb
,mg.required_memory_kb
,mg.query_cost
,mg.timeout_sec
,mg.resource_semaphore_id
,mg.wait_time_ms
,CASE mg.is_next_candidate
WHEN 1 THEN 'Yes'
WHEN 0 THEN 'No'
ELSE 'Memory has been granted'
END AS 'Next Candidate for Memory Grant'
,rs.target_memory_kb
,rs.max_target_memory_kb
,rs.total_memory_kb
,rs.available_memory_kb
,rs.granted_memory_kb
,rs.used_memory_kb
,rs.grantee_count
,rs.waiter_count
,rs.timeout_error_count
,rs.forced_grant_count
FROM sys.dm_exec_requests r
INNER JOIN sys.dm_exec_sessions es
ON r.session_id = es.session_id
INNER JOIN sys.dm_exec_query_memory_grants mg
ON r.session_id = mg.session_id
INNER JOIN sys.dm_exec_query_resource_semaphores rs
ON mg.resource_semaphore_id = rs.resource_semaphore_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle)st
La selezione restituisce tutte le informazioni relative alla memoria in uso per le query sulla nostra istanza....
Nessun commento:
Posta un commento