Perché le statistiche di aggiornamento della scansione completa utilizzano il 100% della CPU su SQL Server 2014 quando utilizza forse il 20% della CPU su SQL Server 2008 R2, per le stesse tabelle, con funzionalità hardware simile?
Ho esaminato MAXDOP
altre opzioni e non vedo davvero nulla che risalti. Mi rendo conto che potrebbero esserci impostazioni che potrebbero causare questo, ma le impostazioni sono molto simili per entrambi i database (ad esempio, MAXDOP
è 4 per entrambi, con entrambi i core multipli). Entrambi sono Enterprise Edition.
C'è qualcosa di "diverso" in SQL Server 2014 rispetto a SQL Server 2008 R2 che potrebbe spiegarlo? Ho l'opzione di memoria al 90% per entrambi i server. Qualche idea su cosa cercare?
Eseguo le statistiche di aggiornamento con scansione completa (100%) una volta alla settimana su due server utilizzando SQL Server 2008 R2 / SP3 e SQL Server 2014 / SP2 e i database hanno la stessa struttura. Sul server 2008 R2 le statistiche di aggiornamento di due tabelle molto grandi richiedono diverse ore, che è quello che mi aspetto, ma la CPU rimane sotto il 20% circa di utilizzo per tutto il tempo. Sul server 2014, tuttavia, la CPU passa al 100% per circa 40 minuti. Le tabelle sono un po 'più piccole sul server 2014. Vedo questo utilizzando i menu di analisi di SQL Monitor.
Ecco l'output del file di registro Ola su SQL Server 2014, la CPU passa al 100% da circa 2:10 a 2:45:
Date and time: 2017-06-24 02:10:20
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000005_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:07:48
Date and time: 2017-06-24 02:18:08
Date and time: 2017-06-24 02:18:08
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000006_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:32:22
Date and time: 2017-06-24 02:50:30
Ecco l'output del file di registro Ola su SQL Server 2008 R2 per le due statistiche sopra, ma la CPU arriva forse al 15%:
Date and time: 2017-06-24 03:30:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000003_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:05:00
Date and time: 2017-06-24 03:35:32
Date and time: 2017-06-24 03:35:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000004_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:52:31
Date and time: 2017-06-24 04:28:03
Non posso eseguirli con il server maxdop = 1 poiché ciò elimina tutta la generazione di piani paralleli e ciò potrebbe danneggiare l'applicazione. Ho intenzione di andare nella direzione opposta e aumentarlo a 8 (ci sono 16 core sulla scatola) e vedere cosa succede. Può andare più veloce per ridurre la durata del pegging della CPU. Questo lavoro viene eseguito mentre gli utenti sono per lo più andati.
tempdb
configurazione è la stessa? Può essere utilizzato mentreUPDATE STATISTICS
è in esecuzione, quindi potrebbe anche essere un problema.