Nasza baza danych aplikacji dostawców wymaga bardzo TempDB.
Serwer jest wirtualny (VMWare) z 40 rdzeniami i 768 GB pamięci RAM, na którym działa SQL 2012 Enterprise SP3.
Wszystkie bazy danych, w tym TempDB, znajdują się na dyskach SSD poziomu 1 w sieci SAN. Mamy 10 plików danych tempdb, każdy wstępnie powiększony do 1 GB i nigdy nie rośnie automatycznie. To samo z plikiem dziennika 70 GB. Flagi śledzenia 1117 i 1118 są już ustawione.
sys.dm_io_virtual_file_stats pokazuje ponad 50 terabajtów odczytanych / zapisanych na danych tempdb i plikach dziennika w poprzednim miesiącu, z łącznym io_stall wynoszącym 250 godzin lub 10 dni.
W ciągu ostatnich 2 lat dostosowaliśmy już kod dostawcy i SP.
Teraz myślimy o umieszczeniu plików tempdb na dysku RAM, ponieważ mamy mnóstwo pamięci. Ponieważ tempdb ulega zniszczeniu / odtworzeniu po ponownym uruchomieniu serwera, jest idealnym kandydatem do umieszczenia w pamięci nietrwałej, która również zostaje wypłukana po ponownym uruchomieniu serwera.
Przetestowałem to w niższym środowisku i spowodowało to szybsze czasy zapytań, ale zwiększyło użycie procesora, ponieważ procesor wykonuje więcej pracy zamiast czekać na wolnym dysku tempdb.
Czy ktoś jeszcze umieścił tempdb na pamięci RAM w systemach produkcyjnych o wysokiej wydajności? Czy jest jakaś poważna wada? Czy są jacyś dostawcy, którzy wybierają lub unikają?