Fondo
Estoy en el proceso de migrar una base de datos de 160 gb de MSSQL 2008 (estándar) en un servidor Win 2008 con 48 gb de RAM a un nuevo servidor que ejecuta MSSQL 2012 (edición web de 64 bits) en Win 2012 con 64 gb de RAM. El antiguo servidor está activo y bajo carga; El nuevo servidor no está en producción. El nuevo servidor tiene 8 archivos tempdb (4 GB cada uno).
Problema
En las pruebas en el nuevo servidor, veo pasos en numerosas consultas que provocan alertas que mencionan "el operador usó tempdb para derramar datos durante la ejecución". He podido evitar algunos tipos reescribiendo algunas de las consultas, pero esto realmente no está solucionando el problema. Las mismas consultas en el servidor anterior no causan derrames. He leído que los derrames ocurren cuando MSSQL no puede completar una operación en la memoria y tiene que derramar / página en tempdb. ¿Debería preocuparme por los derrames?
Ejemplos
He ejecutado sp_updatestats en la base de datos, por lo que las estadísticas deben estar actualizadas, pero notará que existen algunas discrepancias entre el número estimado y real de filas.
Preocupación de la memoria
He establecido una configuración de memoria máxima para MSSQL de 58 de 64 gb. Actualmente, MSSQL ha consumido alrededor de 35 gb de esta memoria, pero tiene un conjunto de trabajo de solo 682 mb. El antiguo servidor (aunque en producción, manejo de carga) tiene 44 gb de memoria comprometida con MSSQL, de los cuales 43.5 gb están en su conjunto de trabajo.
No sé si los derrames podrían estar relacionados con una configuración de memoria. ¿Alguien tiene alguna idea? MSSQL actualmente tiene acres de RAM de sobra, entonces, ¿por qué se está derramando en tempdb para algunos tipos y coincidencias hash?