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