SQL Server TempDB异常增长问题定位

30 篇文章 4 订阅
22 篇文章 1 订阅

在日常运维工作中,有时会出现TempDB数据量剧增的情况,此时可从如下方面进行问题的排查。

一、查看日志
–查看日志大小

dbcc sqlperf(logspace)

–查看日志状态

select name,log_reuse_wait_desc from sys.databases 

–查看虚拟日志

dbcc loginfo

若TempDB数据文件过大,可考虑收缩数据文件。
收缩方法请参考《SQL Server TempDB 收缩方法》

二、查看tempdb记录的分配情况

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.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

说明:
session_id :稍等可以查询该session的相关信息
internal_objects_alloc_page_count :分配给session内部对象的数据页
internal_objects_dealloc_page_count :已经释放的数据页
login_name : 该session的登录名

三、查看执行语句
上一步操作,已经查出了引起问题的session,并知道了session_id,现可通过session_id查出执行的sql语句。

select p.*,s.text 
from master.dbo.sysprocesses p 
cross apply sys.dm_exec_sql_text(p.sql_handle) s
where spid = XXX    //使用时将XXX换成实际session_id值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值