fundo
Estou migrando um banco de dados de 160 GB do MSSQL 2008 (padrão) em um servidor Win 2008 com 48 GB de RAM para um novo servidor executando o MSSQL 2012 (edição da web de 64 bits) no Windows 2012 com 64 GB de RAM. O servidor antigo está ativo e sob carga; o novo servidor não está em produção. O novo servidor possui 8 arquivos tempdb (4 GB cada).
Problema
Nos testes no novo servidor, estou vendo etapas em várias consultas que causam alertas mencionando "o operador usou o tempdb para espalhar dados durante a execução". Consegui evitar tipos reescrevendo algumas das consultas, mas isso realmente não está solucionando o problema. As mesmas consultas no servidor antigo não causam derramamentos. Eu li que derramamentos acontecem quando o MSSQL não pode concluir uma operação na memória e precisa derramar / página no tempdb. Devo me preocupar com derramamentos?
Exemplos
Eu executei sp_updatestats no banco de dados, portanto, as estatísticas devem estar atualizadas, mas você observará que existem algumas discrepâncias entre o número estimado e real de linhas.
Preocupação com a memória
Eu configurei uma configuração de memória máxima para o MSSQL de 58 dos 64gb. Atualmente, o MSSQL consumiu cerca de 35 GB dessa memória, mas possui um conjunto de trabalho de apenas 682 MB. O servidor antigo (embora em produção, manipulando carga) possui 44 GB de memória confirmada no MSSQL, dos quais 43,5 GB estão em seu conjunto de trabalho.
Não sei se os derramamentos podem estar relacionados a uma configuração de memória - alguém tem alguma idéia? Atualmente, o MSSQL tem muitos acres de RAM de sobra, então por que está se espalhando no tempdb para alguns tipos e correspondências de hash?