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

时间:2017-04-19 22:05:56

标签: 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 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

我们的I / O几乎有90%都是在tempdb数据库中完成的。排名第二,仅为2.43%。

我们对可能导致tempdb的所有I / O的原因感到茫然。

有没有人有办法让我们追踪tempdb中发生的事情?

0 个答案:

没有答案