最近帮助客户调优的过程中,发现客户的TempDB存在非常大的压力,经过排查是发现某些语句对TempDB的巨量使用所导致。

在SQL Server中,TempDB主要负责供下述三类情况使用:

  • 内部使用(排序、hash join、work table等)
  • 外部使用(临时表,表变量等)
  • 行版本控制(乐观并发控制)

而对于内部使用,一些比较复杂的查询中由于涉及到了大量的并行、排序等操作时就需要大量的内存空间,每一个查询在开始时都会由SQL Server预估需要多少内存,在具体的执行过程中,如果授予的内存不足,则需要将多出来的部分由TempDB处理,这也就是所谓的Spill to TempDB。

通过下述语句可以观察到某个查询对TempDB造成了多少读写:

DECLARE @read   BIGINT,          @write  BIGINT ;         SELECT  @read = SUM(num_of_bytes_read), @write = SUM(num_of_bytes_written) FROM tempdb.sys.database_files AS DBF JOIN sys.dm_io_virtual_file_stats(2, NULL) AS FS ON FS.file_id = DBF.file_id WHERE DBF.type_desc = 'ROWS'--这里放入需要测量的语句SELECT tempdb_read_MB = (SUM(num_of_bytes_read) - @read) / 1024. / 1024., tempdb_write_MB = (SUM(num_of_bytes_written) - @write) / 1024. / 1024., internal_use_MB = ( SELECT internal_objects_alloc_page_count / 128.0 FROM sys.dm_db_task_space_usage WHERE session_id = @@SPID ) FROM tempdb.sys.database_files AS DBF JOIN sys.dm_io_virtual_file_stats(2, NULL) AS FS ON FS.file_id = DBF.file_id WHERE DBF.type_desc = 'ROWS'

最近在一个客户那里看到的烂查询所导致的TempDB使用结果如下:

使用该查询就可以帮助了解某个语句使用了多少TempDB。

转载于:https://www.cnblogs.com/sthinker/p/6081542.html

如何查看某个查询用了多少TempDB空间相关推荐

  1. mysql 性能查看_MySQL查询性能问题排查

    Mysql数据库的性能问题排查是十分复杂的,具体方法视场景而定,这里只做大致思路分析. 1. 整体考虑导致查询性能低下的各种因素 导致SQL查询变慢的原因是多元化的,在遇到问题时首先要有一个全方位的思 ...

  2. MYSQL避免全表扫描__如何查看sql查询是否用到索引(mysql)

    MYSQL避免全表扫描 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断,否 ...

  3. mysql时间段查询语句_MySQL 如何查看慢查询语句

    为保证数据库性能,我们要对慢查询语句进行优化.本文分享 Mysql 数据库如何查看慢查询语句. Mysql 默认情况下记录慢查询语句的功能是关闭的.用如下命令查看: SHOW VARIABLES LI ...

  4. 苹果保修期_苹果手机怎么查看保修期 查询有效保修状态日期方法

    苹果手机怎么查看保修期 查询有效保修状态日期方法 当我们在购买新手机的时候都是有一定的手机保修时间的,在一定的时间范围内手机出现问题都可以进行售后保修,并且不同品牌的手机保修期限会有所不同,查看保修日 ...

  5. 查看SQL查询数据所话费时间

    通过下面语句可以查看某查询语句查询数据所话费的时间 在select查询语句前加: declare @d datetime set @d=getdate() 并在selec查询t语句后加: select ...

  6. 【记录】Windows 11|激活Windows系统的产品密钥的获取、安装、查看以及查询使用次数

    Windows 11. 系统的产品密钥的获取.安装.查看以及查询使用次数的具体步骤如下. 文章目录 1 产品密钥的获取 2 产品密钥的安装和激活 3 产品密钥的查看及使用次数查询 1 产品密钥的获取 ...

  7. Mysql查看慢查询日志

    我们在工作中经常会遇到执行很慢的sql语句,今天我们来看一下慢查询日志 查看通用日志 show variables like '%general%'; 默认通用日志是关闭的, 开启通用日志查询: se ...

  8. TEMPDB空间已满

    数据库tempdb在运行过程中主要会遇到2种报错: 1.tempdb空间已满 2.tempdb日志已满 正常情况下,tempdb空间及日志使用率会自动收缩,不需要我们定期收缩.但有些时候,效率较差的S ...

  9. MS Sql Server查询数据库文件大小和剩余空间,数据库日志压缩

    Sql Server查询数据库文件大小和剩余空间,数据库日志压缩 A.磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率 1.查询各个磁盘分区的剩余空间: 2.查询数据库的数据文件及日志 ...

最新文章

  1. 矢量图面层和线层相交得到相交后的线层文件(gis相交)
  2. oracle Ratio_to_report的用法
  3. 什么是条带化(striping) ?(转载)
  4. php和python写爬虫-python写爬虫方便还是php方便
  5. 完成AOP 顶层设计-JoinPoint
  6. 原始人java生存游戏_原始人人生模拟器
  7. Java垃圾收集机制
  8. 防伪拉线 CCD 纠偏控制器
  9. php入门代码 基础慕课,php基础入门
  10. 纽约比加州时间早3个小时 - 送给自己
  11. 利用 CSS 实现文字二次加粗和多重边框效果
  12. c语言结构体stamp是什么意思,stamp是什么意思
  13. 快速记住《计算机文化基础》海量题法
  14. UNITY设计一款简单的3d射击小游戏(虚拟现实大作业)
  15. [智慧园区]之访客应用
  16. 营业执照如何完整的转为Word格式?
  17. 微信小程序-云开发上传文件、图片
  18. 如何在scrapy中捕获并处理各种异常
  19. 【Linux】程序卡死、失败位置|pstack和starce看进程调用|分析耗时函数
  20. Java中实现图片的上传

热门文章

  1. 基金投资需要注意什么?
  2. 父亲做过什么让你终身难忘的事情?
  3. 全职带孩子可能会面临哪些问题?
  4. 手机内存8+128与6+256价格相同,你会选哪个?
  5. 有哪些相见恨晚的运动常识
  6. 我很多文章都有建议大伙不要轻易去创业
  7. 社保交满15年就可以停缴了吗?就可以领取养老金了吗?
  8. Navicat 12 安装
  9. python PyQt5初级教程hello world
  10. jdbc数据源连接oracle,请教JDBC怎么连接ORACLE数据库