¿Por qué las estadísticas de actualización de exploración completa usan el 100% de la CPU en SQL Server 2014 cuando usa quizás el 20% de la CPU en SQL Server 2008 R2, para las mismas tablas, con una capacidad de hardware similar?
He estado buscando MAXDOP
otras opciones y realmente no veo nada que destaque. Me doy cuenta de que podría haber configuraciones que podrían causar esto, pero las configuraciones son muy similares para ambas bases de datos (por ejemplo, MAXDOP
es 4 para ambas, y ambas tienen múltiples núcleos). Ambos son Enterprise Edition.
¿Hay algo "diferente" en SQL Server 2014 versus SQL Server 2008 R2 que pueda explicar esto? Tengo la opción de memoria al 90% para ambos servidores. ¿Alguna idea sobre qué buscar?
Ejecuto estadísticas de actualización con escaneo completo (100%) una vez por semana en dos servidores que usan SQL Server 2008 R2 / SP3 y SQL Server 2014 / SP2, y las bases de datos tienen la misma estructura. En el servidor 2008 R2, las estadísticas de actualización de dos tablas muy grandes tardan varias horas, que es lo que espero, pero la CPU permanece por debajo del 20% más o menos todo el tiempo. Sin embargo, en el servidor de 2014, la CPU alcanza el 100% durante aproximadamente 40 minutos. Las tablas son un poco más pequeñas en el servidor 2014. Veo esto usando los menús de análisis del Monitor SQL.
Aquí está la salida del archivo de registro de Ola en el SQL Server 2014, la CPU pasa al 100% de aproximadamente 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
Aquí está la salida del archivo de registro de Ola en el SQL Server 2008 R2 para las dos estadísticas anteriores, pero la CPU alcanza quizás el 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
No puedo ejecutarlos con el servidor maxdop = 1 ya que eso elimina toda la generación de planes paralelos, y eso podría dañar la aplicación. Planeo ir en la dirección opuesta y aumentarlo a 8 (hay 16 núcleos en la caja) y ver qué pasa. Puede ir más rápido para reducir el tiempo de vinculación de la CPU. Este trabajo se ejecuta mientras los usuarios ya no están.
tempdb
configuración es la misma? Se puede usar mientras seUPDATE STATISTICS
está ejecutando, por lo que también podría ser un problema.