MSSQL如何定位大量占用tempdb的SQL语句

0    148    3

Tags:

👉 本文共约1164个字,系统预计阅读时间或需5分钟。

简介

若SQL在运行,则直接去查询会话即可。

若SQL已完成,则可以通过sys.dm_db_session_space_usage查询,但是时间长也不会保存

若2017版本,则可以使用查询存储来获取,若其它版本可以通过JOB定时来获取。

查看tempdb记录的分配情况

如果查询上面的DMV距事件发生时间太久,可能就查不到了,要尽快查看

img

有四个关键信息:

  • session_id:可以查询该session的相关信息
  • internal_objects_alloc_page_count:分配给session内部对象的数据页
  • internal_objects_dealloc_page_count:已经释放的数据页
  • login_name:该session的登录名
    1. 从internal_objects_alloc_page_count可以看出,给session分配了133200页,计算一下大约是1G,假如和告警时tempdb增长的大小一致,执行时间也接近,基本就可以断定是这个session引起的。
    2. 从internal_objects_dealloc_page_count可以看到占用tempdb的数据已经释放了。
    3. 从login_name可知道操作人(这就是实名用户的好处之一,可以很快追踪使用者,是内部人员操作)。
    4. 从session_id可以查询最后一条执行的语句。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复