如何查看SQLSERVER中某个查询用了多少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。

时间: 2024-10-25 02:32:29

如何查看SQLSERVER中某个查询用了多少TempDB空间的相关文章

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

    在SQL Server中,TempDB主要负责供下述三类情况使用: 内部使用(排序.hash join.work table等) 外部使用(临时表,表变量等) 行版本控制(乐观并发控制)       而对于内部使用,一些比较复杂的查询中由于涉及到了大量的并行.排序等操作时就需要大量的内存空间,每一个查询在开始时都会由SQL Server预估需要多少内存,在具体的执行过程中,如果授予的内存不足,则需要将多出来的部分由TempDB处理,这也就是所谓的Spill to TempDB.    

SQLSERVER中XML查询:FORXML指定RAW

SQL SERVER中XML查询:FOR XML指定RAW 前言 在SQL SERVER中,XML查询可以指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指定RAW的XML查询. 基础FOR XML查询 看实例: with TestXml as ( select 1 as id,'LeeWhoeeUniversity' as name union all select 2,'SQLSERVER中XML查询' union all select 3 ,'FO

SqlServer中模糊查询对于特殊字符的处理方法

今天在处理sql查询的时候遇到了like查询不到的问题,于是对问题进行剖析 问题: select * from v_workflow_rt_task_circulate where Name like '%[admin]请假申请[2017-02-13至2017-02-13]%' 查询不到,但是在数据库中是存在在这一条数据的. 修改后: select * from v_workflow_rt_task_circulate where Name like '%[[]admin]请假申请[[]2017

SQLSERVER中XML查询:FORXML指定AUTO

SQL SERVER中XML查询:FOR XML指定AUTO  前言 在SQL SERVER中,XML查询可以指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指定AUTO的XML查询. 基础示例 片断1: with TestXml as ( select 1 as id,N'LeeWhoeeUniversity' as name union all select 2,N'DePaul' union all select 3 ,null ) select

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

最近帮助客户调优的过程中,发现客户的TempDB存在非常大的压力,经过排查是发现某些语句对TempDB的巨量使用所导致. 在SQL Server中,TempDB主要负责供下述三类情况使用: 内部使用(排序.hash join.work table等) 外部使用(临时表,表变量等) 行版本控制(乐观并发控制) 而对于内部使用,一些比较复杂的查询中由于涉及到了大量的并行.排序等操作时就需要大量的内存空间,每一个查询在开始时都会由SQL Server预估需要多少内存,在具体的执行过程中,如果授予的内存

sqlserver中如何查询出连续日期记录的代码_MsSql

有在论坛上看到一帖,<请教查询出连续日期记录的方法>,截图如下: Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用. 复制代码 代码如下: --创建一个临时表,将会存储连续日期的记录 CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME) DECLARE @sD DATETIME --开始日期 DECLARE @eD DATETIME --结束日期 --在记录中,找出开始与结束日期 SELECT @sD =

sql server-sqlserver中一个查询问题,急需解答!!!

问题描述 sqlserver中一个查询问题,急需解答!!! 解决方案 http://www.oschina.net/question/573517_118821 解决方案二: http://www.cnblogs.com/New-world/archive/2013/05/29/3106127.html 解决方案三: SQLServer常见查询问题SQLServer常见查询问题多年困扰我的一个技术问题,希望这方面的专家指点一下,有关SQLServer并发控制方面的问题

sqlserver中的 数据转换 与 子查询

原文:sqlserver中的 数据转换 与 子查询 数据类型转换   --cast转换 select CAST(1.23 as int)       select CAST(1.2345 as decimal(18,2))       select CAST(123 as varchar(10))     整型转换成字符串型       select CAST('123.333' as decimal(18,4))    字符串型转换成浮点型     --convert转换 select CON

select-winfrom中如何把SqlServer数据库表查询出来的数据插入access数据库表中

问题描述 winfrom中如何把SqlServer数据库表查询出来的数据插入access数据库表中 sqlserver里面的数据是根据条件查询出来的,现在是把查询出来的数据,给他导入到access数据库中,但是不知道在C#后台中怎么写 跨数据库去执行insert select,求解啊啊啊啊啊啊 解决方案 大概的代码 DataTable table = new DataTable() SqlConnection sqlconn = new SqlConnection(connectionStr);