Nuestra base de datos de aplicaciones de proveedores es muy intensiva en TempDB.
El servidor es virtual (VMWare) con 40 núcleos y 768 GB de RAM, y ejecuta SQL 2012 Enterprise SP3.
Todas las bases de datos, incluido TempDB, están en SSD de nivel 1 en SAN. Tenemos 10 archivos de datos tempdb, cada uno pre-crecido a 1GB y nunca crecen automáticamente. Lo mismo con el archivo de registro de 70 GB. Las banderas de seguimiento 1117 y 1118 ya están configuradas.
sys.dm_io_virtual_file_stats muestra más de 50 Terabytes leídos / escritos en datos tempdb y archivos de registro en el último mes, con io_stall acumulativo de 250 horas o 10 días.
Ya hemos ajustado el código del proveedor y los SP en los últimos 2 años.
Ahora, estamos pensando en colocar archivos tempdb en la unidad RAM, ya que tenemos un montón de memoria. Dado que tempdb se destruye / recrea cuando se reinicia el servidor, es un candidato ideal para colocar en la memoria volátil que también se vacía cuando se reinicia el servidor.
He probado esto en un entorno inferior y ha resultado en tiempos de consulta más rápidos, pero ha aumentado el uso de la CPU, porque la CPU está haciendo más trabajo en lugar de esperar en la unidad tempdb lenta.
¿Alguien más ha puesto su tempdb en RAM en sistemas de alta producción oltp? ¿Hay alguna desventaja importante? ¿Hay algún proveedor para elegir o evitar específicamente?