A bit of background: We have 17 different TempDB database files and 6 TempDB log files on the server. These are spread out on different drives, but are hosted on 2 drive arrays.
I’m seeing Disk IO response times exceeding the recommended limits. Typically you want your disks to respond in 5-10ms, with nothing going over 200ms. We’re seeing random spikes up to 800ms on the TempDB files, but only on one drive array.
Proposed solution: Restart SQL server. While SQL server is shut down, reboot the drive array hosting the majority of the TempDB files. In addition, while SQL is down, redo the network connection to bypass the network switch in an attempt to eliminate any source of slowness on the hardware.
Is this a good idea or a shot in the dark? Any ideas?
Thanks in advance.
17? Who came up with that number? Please read this and this – very few scenarios where > 8 files will help, particularly if you only have 2 underlying arrays/controllers. Some suggestions:
DBCC CHECKDBelsewhere. If you’re runningCHECKDBregularly, yay! Pat yourself on the back. However this can take a toll on tempdb – please see this article on optimizing this operation and pulling it away from your production instance where feasible.Have you considered making less use of tempdb explicitly (fewer #temp tables, @table variables, and static cursors – or cursors altogether)? Are you making heavy use of RCSI, or MARS, or LOB-type local variables?