Sql server 如何确定导致tempdb中I/O的原因?
我们已经对SQL Server数据库运行了一些性能查询 其中之一是返回一些非常令人担忧的结果: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
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
应该会显示一些细节。也许探查器会给出提示,比如排序警告事件?