我有一个使用本地 SSD 进行 tempDB 的生产部署。我在 RAID1 配置中有 2 个 SSD。我看到平均读取时间为 1-2 毫秒,但我的所有四个 tempdb 数据文件的平均写入时间显示为 1377 毫秒。
每个 tempdb 数据文件为 2GB,增长设置为 1GB(自 5 个月前部署以来,它们没有增长)
tempdb 日志显示平均读取时间为 67 毫秒,平均写入时间为 215 毫秒。
SSD 是三星 840 专业版。
以下代码是我用来获取统计信息的代码
SELECT a.database_Id,
a.file_id,
db_name(a.database_id) AS dbname,
b.name,
db_file_type = CASE
WHEN a.file_id = 2 THEN 'Log'
ELSE 'Data'
END,
UPPER(SUBSTRING(b.physical_name, 1, 2)) AS disk_location,
a.io_stall,
a.io_stall_read_ms / Case When a.num_of_reads = 0 Then 1 Else a.num_of_reads end AvgRead,
a.io_stall_write_ms / Case When a.num_of_writes = 0 Then 1 Else a.num_of_writes end AvgWrite,
Cast(Round(((( a.size_on_disk_bytes / 1024 ) / 1024.0 ) / 1024), 2) as float) AS size_on_disk_gb
FROM sys.dm_io_virtual_file_stats (NULL, NULL) a
JOIN sys.master_files b ON a.file_id = b.file_id AND a.database_id = b.database_id
ORDER BY a.io_stall DESC
以下是返回的前 5 行
database_Id file_id dbname name db_file_type disk_location io_stall AvgRead AvgWrite size_on_disk_gb
2 1 tempdb tempdev Data F: 19782846713 2 1377 2
2 3 tempdb tempdev2 Data F: 19782655021 2 1377 2
2 5 tempdb tempdev4 Data F: 19782364070 2 1377 2
2 4 tempdb tempdev3 Data F: 19782151571 2 1377 2
2 2 tempdb templog Log F: 378829065 67 215 1
所以我在 SSD 上的 tmepdb 文件是我拥有的最慢的驱动器。从配置/基础架构的角度来看,我应该注意什么?我目前正在研究 tempdb 的应用程序使用情况和任何内存溢出,但我没有看到任何可怕的东西。
我们通过更换服务器上的 RAID 控制器解决了这个问题。磁盘和服务器配置很好,但 RAID 控制器似乎无法处理 IO。
我们现在处于读取 ~ 2ms 和 <= 5ms 写入的好地方