合 MSSQL如何定位大量占用tempdb的SQL语句
Tags: MSSQLSQL Server慢SQLtempdb
简介
有时会收到tempdb日志文件使用率超过90%的告警,最准确的处理方式是直接登上去看有哪些长时间运行且会大量消耗tempdb的语句在执行,但有时刚好不方便操作,在登录查看时sql已经执行完了,事后难判断。
查询文章发现还可以通过tempdb分配情况去分析,不过要注意这种方法找到的只是问题会话,未必能找到导致问题的sql,感觉配合扩展事件的慢sql监控应该能解决这个问题。
查看tempdb记录的分配情况
如果查询上面的DMV距事件发生时间太久,可能就查不到了,要尽快查看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | use tempdb go SELECT top 10 t1.session_id, t1.internal_objects_alloc_page_count, t1.user_objects_alloc_page_count, t1.internal_objects_dealloc_page_count , t1.user_objects_dealloc_page_count, t3.login_name,t3.login_time,t3.last_request_start_time,t3.status,t3.total_elapsed_time from sys.dm_db_session_space_usage t1 inner join sys.dm_exec_sessions as t3 on t1.session_id = t3.session_id where (t1.internal_objects_alloc_page_count>0 or t1.user_objects_alloc_page_count >0 or t1.internal_objects_dealloc_page_count>0 or t1.user_objects_dealloc_page_count>0) order by t1.internal_objects_alloc_page_count desc |