Unsere Anbieteranwendungsdatenbank ist sehr TempDB-intensiv.
Der Server ist virtuell (VMWare) mit 40 Kernen und 768 GB RAM und führt SQL 2012 Enterprise SP3 aus.
Alle Datenbanken einschließlich TempDB befinden sich auf Tier 1 SSD in SAN. Wir haben 10 Tempdb-Datendateien, die jeweils auf 1 GB vorgewachsen sind und niemals automatisch wachsen. Gleiches gilt für 70 GB Protokolldatei. Die Trace-Flags 1117 und 1118 sind bereits gesetzt.
sys.dm_io_virtual_file_stats zeigt über 50 Terabyte an, die im letzten Monat in Tempdb-Daten- und Protokolldateien gelesen / geschrieben wurden, mit einer kumulierten io_stall von 250 Stunden oder 10 Tagen.
Wir haben den Code und die SPs des Anbieters bereits in den letzten 2 Jahren optimiert.
Jetzt denken wir darüber nach, Tempdb-Dateien auf dem RAM-Laufwerk abzulegen, da wir eine Menge Speicher haben. Da Tempdb beim Neustart des Servers zerstört / neu erstellt wird, ist es ein idealer Kandidat für den flüchtigen Speicher, der auch beim Neustart des Servers gelöscht wird.
Ich habe dies in einer niedrigeren Umgebung getestet und es hat zu schnelleren Abfragezeiten, aber einer erhöhten CPU-Auslastung geführt, da die CPU mehr Arbeit leistet, anstatt auf ein langsames Tempdb-Laufwerk zu warten.
Hat jemand anderes seine Tempdb auf RAM in High-Oltp-Produktionssystemen gestellt? Gibt es einen großen Nachteil? Gibt es Anbieter, die speziell ausgewählt oder vermieden werden müssen?