SQL Server - Tempdb 数据/日志文件放置

5 sql-server

目前我们在同一驱动器上获得了 TEMPDB 数据(数据文件数:2)和日志文件。

在监控过程中,我们发现了 TempDB 上的 I/O 问题。

我们有一个额外的驱动器可用 - 我们应该将 TempDB 日志文件移动到新驱动器,还是应该将第二个 TEMPDb 数据文件移动到新驱动器上以帮助我们减少 I/O 问题?

Mar*_*ith 6

如果您已经确定存在 IO 争用,请首先了解是哪些文件引起的。

SELECT
    DB_NAME(fs.database_id) AS [Database Name]
  , mf.physical_name
  , io_stall_read_ms
  , num_of_reads
  , CAST(io_stall_read_ms / (1.0 + num_of_reads) AS NUMERIC(10, 1)) AS [avg_read_stall_ms]
  , io_stall_write_ms
  , num_of_writes
  , CAST(io_stall_write_ms / (1.0 + num_of_writes) AS NUMERIC(10, 1)) AS [avg_write_stall_ms]
  , io_stall_read_ms + io_stall_write_ms AS [io_stalls]
  , num_of_reads + num_of_writes AS [total_io]
  , CAST((io_stall_read_ms + io_stall_write_ms) / (1.0 + num_of_reads
    + num_of_writes) AS NUMERIC(10, 1)) AS [avg_io_stall_ms]
FROM
    sys.dm_io_virtual_file_stats(NULL, NULL) AS fs
INNER JOIN 
    sys.master_files AS mf
ON  fs.database_id = mf.database_id
AND fs.[file_id] = mf.[file_id]
ORDER BY
    avg_io_stall_ms DESC
OPTION
    (RECOMPILE) ;
Run Code Online (Sandbox Code Playgroud)

使用来自该查询的数据,您可以判断日志或数据文件是否是 tempdb 中的争用点。将两个数据文件放在一个驱动器上并将日志文件分开使用可能会更好,但是如果没有支持该决定的数字,您将永远不会知道。

  • @PaulWilliams 的意思无非是“不要缓存此计划”。 (2认同)