Sql server 如何确定导致tempdb中I/O的原因?

Sql server 如何确定导致tempdb中I/O的原因?,sql-server,Sql Server,我们已经对SQL Server数据库运行了一些性能查询 其中之一是返回一些非常令人担忧的结果: WITH Aggregate_IO_Statistics AS ( SELECT DB_NAME(database_id) AS [Database Name], CAST(SUM(num_of_bytes_read + num_of_bytes_written)/1048576 AS DECIMAL(12, 2)) AS io_in_mb FROM

我们已经对SQL Server数据库运行了一些性能查询

其中之一是返回一些非常令人担忧的结果:

WITH Aggregate_IO_Statistics
AS
(
    SELECT 
        DB_NAME(database_id) AS [Database Name],
        CAST(SUM(num_of_bytes_read + num_of_bytes_written)/1048576 AS DECIMAL(12, 2)) AS io_in_mb
    FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS [DM_IO_STATS]
    GROUP BY database_id
)
SELECT 
    ROW_NUMBER() OVER(ORDER BY io_in_mb DESC) AS [I/O Rank], 
    [Database Name], 
    io_in_mb AS [Total I/O (MB)],
    CAST(io_in_mb/ SUM(io_in_mb) OVER() * 100.0 AS DECIMAL(5,2)) AS [I/O Percent]
FROM Aggregate_IO_Statistics
ORDER BY [I/O Rank]
;
我们得到的是:

I/O Rank    Database Name    Total I/O (MB)    I/O Percent
1           tempdb           94288973.00       88.84
我们几乎90%的I/O都是对tempdb数据库进行的。第二名仅占2.43%

我们不知道是什么原因导致所有I/O都指向tempdb


有没有人能帮我们找到tempdb中正在发生的事情?

有很多temp表吗
select*from tempdb.sys.objects
应该会显示一些细节。也许探查器会给出提示,比如排序警告事件?