一些背景知识:我们在服务器上有17个不同的TempDB数据库文件和6个TempDB日志文件。它们分布在不同的驱动器上,但托管在2个驱动器阵列上。
我发现磁盘IO响应时间超过了建议的限制。通常,您希望磁盘在5-10ms内响应,不会超过200ms。我们在TempDB文件上看到了高达800毫秒的随机峰值,但只在一个驱动器阵列上。
建议的解决方案:重新启动SQL服务器。当SQL Server关闭时,重新启动托管大多数TempDB文件的驱动器阵列。此外,在SQL关闭时,重新启动网络连接以绕过网络交换机,以尝试消除硬件上任何缓慢的来源。
这是一个好主意还是在黑暗中拍摄?有任何想法吗? 提前谢谢。
答案 0 :(得分:9)
17?谁想出那个号码? Please read this和this - 很少有情景> 8个文件将有所帮助,特别是如果您只有2个底层阵列/控制器。一些建议:
DBCC CHECKDB
。如果你经常运行CHECKDB
,那么!拍拍自己的背部。但是,这可能会对tempdb - please see this article on optimizing this operation产生影响,并在可行的情况下将其从生产实例中拉出来。您是否考虑过显式减少使用tempdb(更少的#temp表,@ table变量和静态游标 - 或完全使用游标)?您是否大量使用RCSI,或MARS或LOB类型的局部变量?