主页 > 知识库 > 如何查看SQLSERVER中某个查询用了多少TempDB空间

如何查看SQLSERVER中某个查询用了多少TempDB空间

热门标签:400外呼系统合法 怎样把地图标注导入公司地址 真人语音电销机器人 宁波人工外呼系统有效果吗 如何在地图标注自己店铺 地图标注一个圆圈怎么用 电销机器人被曝光 广州人工电销机器人费用 洛阳外呼系统平台

    在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。

您可能感兴趣的文章:
  • sqlserver 游标的简单示例
  • sqlserver 函数、存储过程、游标与事务模板
  • sqlserver中触发器+游标操作实现
  • SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
  • sqlserver游标使用步骤示例(创建游标 关闭游标)
  • SqlServer中tempdb的日志机制原理解析及示例分享
  • SqlServer数据库提示 “tempdb” 的日志已满 问题解决方案
  • 浅谈tempdb在SqlServer系统中的重要作用
  • SqlServer提示“列前缀tempdb.无效: 未指定表名”问题解决方案
  • SQL Server使用游标处理Tempdb究极竞争-DBA问题-程序员必知

标签:珠海 东营 烟台 咸宁 石家庄 北海 晋中 南昌

巨人网络通讯声明:本文标题《如何查看SQLSERVER中某个查询用了多少TempDB空间》,本文关键词  如何,查看,SQLSERVER,中,某个,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《如何查看SQLSERVER中某个查询用了多少TempDB空间》相关的同类信息!
  • 本页收集关于如何查看SQLSERVER中某个查询用了多少TempDB空间的相关信息资讯供网民参考!
  • 推荐文章