一点背景知识: 我们在服务器上有 17 个不同的 TempDB 数据库文件和 6 个 TempDB 日志文件。它们分布在不同的驱动器上,但托管在 2 个驱动器阵列上。
我看到磁盘 IO 响应时间超过了建议的限制。通常你希望你的磁盘在 5-10 毫秒内响应,没有超过 200 毫秒。我们在 TempDB 文件上看到了长达 800 毫秒的随机峰值,但仅限于一个驱动器阵列。
建议的解决方案: 重新启动 SQL 服务器。当 SQL 服务器关闭时,重新启动承载大部分 TempDB 文件的驱动器阵列。此外,当 SQL 关闭时,重做网络连接以绕过网络交换机,以消除硬件上的任何缓慢来源。
这是一个好主意还是黑暗中的一个镜头?有任何想法吗?
提前致谢。
最佳答案
17?这个数字是谁想出来的? Please read this 和 this - 很少有> 8 个文件会有所帮助的情况,特别是如果您只有 2 个底层数组/ Controller 。一些建议:
DBCC CHECKDB
。如果您经常运行 CHECKDB
,那太好了!拍拍自己的后背。但是,这可能会对 tempdb - please see this article on optimizing this operation 造成影响,并在可行的情况下将其从生产实例中移除。 您是否考虑过显式地减少使用 tempdb(更少的 #temp 表、@table 变量和静态游标 - 或完全使用游标)?您是否大量使用 RCSI、MARS 或 LOB 类型的局部变量?
关于sql-server - TempDB 性能爬取;我们应该重新启动吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14697128/