我们的供应商应用程序数据库非常占用TempDB。
该服务器是具有40个内核和768GB RAM的虚拟服务器(VMWare),运行SQL 2012 Enterprise SP3。
包括TempDB在内的所有数据库都位于SAN的1层SSD上。我们有10个tempdb数据文件,每个文件已预先增长到1GB,并且它们从未自动增长。与70GB日志文件相同。跟踪标志1117和1118已设置。
sys.dm_io_virtual_file_stats显示过去一个月在tempdb数据和日志文件上读取/写入的数据超过50 TB,累积io_stall为250小时或10天。
在过去的两年中,我们已经调整了供应商的代码和SP。
现在,我们正在考虑将tempdb文件放置在RAM驱动器上,因为我们有大量的内存。由于tempdb在重新引导服务器时被破坏/重新创建,因此它是放置在易失性内存中的理想选择,该易失性内存在重新引导服务器时也会被清除。
我已经在较低的环境中对此进行了测试,它可以缩短查询时间,但可以增加CPU使用率,因为CPU可以做更多的工作,而不是等待慢的tempdb驱动器。
还有其他人将tempdb放在高oltp生产系统的RAM上吗?有什么主要的不利条件吗?是否有任何供应商专门选择或避免?