sfondo
Sto eseguendo la migrazione di un database da 160 GB da MSSQL 2008 (standard) su un server Win 2008 con RAM da 48 GB a un nuovo server che esegue MSSQL 2012 (edizione Web a 64 bit) su Win 2012 con 64 GB di RAM. Il vecchio server è attivo e sotto carico; il nuovo server non è in produzione. Il nuovo server ha 8 file tempdb (4 GB ciascuno).
Problema
Durante i test sul nuovo server vedo passaggi in numerose query che causano avvisi che menzionano "l'operatore ha utilizzato tempdb per versare dati durante l'esecuzione". Sono stato in grado di evitare i tipi riscrivendo alcune delle query, ma questo non risolve davvero il problema. Le stesse query sul vecchio server non causano sversamenti. Ho letto che gli sversamenti si verificano quando MSSQL non può completare un'operazione in memoria e deve versare / pagina in tempdb. Dovrei essere preoccupato per gli sversamenti?
Esempi
Ho eseguito sp_updatestats sul database, quindi le statistiche dovrebbero essere aggiornate, ma noterai che ci sono alcune discrepanze tra il numero di righe stimato e quello effettivo.
Preoccupazione per la memoria
Ho impostato un'impostazione di memoria massima per MSSQL di 58 dei 64 GB. Attualmente MSSQL ha consumato circa 35 GB di memoria, ma ha un set di lavoro di soli 682 MB. Il vecchio server (anche se in produzione, gestione del carico) ha 44 GB di memoria impegnata in MSSQL di cui 43,5 GB nel suo set di lavoro.
Non so se gli sversamenti potrebbero essere correlati a un'impostazione di memoria: qualcuno ha qualche idea? MSSQL ha attualmente acri di RAM da risparmiare, quindi perché si sta riversando in tempdb per alcuni tipi e corrispondenze hash?