Tengo una instalación de ~ 10 días de WinServer2012R2 y SQL Server Express 2016 para probar. Soy el único usuario en esta máquina. Una base de datos con un .bak de SQL Server 2005 de ~ 250 MB se restaura sin ningún problema. Después de reiniciar la máquina, el proceso "SQL Server NT - 64 Bit" usa 0% de CPU.
Después de un par de minutos u horas y algunas consultas simples (¡sin actualizaciones / inserciones!) Del uso de CPU SSMS de "SQL Server NT - 64 Bit" de repente salta a ~ 15% y permanece allí, incluso cuando está inactivo. A partir de ese momento, las consultas que generalmente toman menos de un segundo de repente toman 2 minutos. Durante una consulta real, el uso de la CPU NO aumenta. El servidor queda prácticamente inutilizable en este estado.
Solo conectar SQL Server Profiler toma> 30 segundos. Además de mis propias consultas, veo muy pocas consultas de SQLServerCEIP / SQLTELEMETRY, ~ 3 por minuto.
Reiniciar SQL-Server no lo resuelve. El uso de la CPU vuelve a saltar a ~ 15%. Incluso después de horas, SQL-Server no se recupera. Solo reiniciar la máquina completa resuelve el problema.
Como se trata de una instalación "lista para usar", solo hay una pequeña base de datos, prácticamente sin consultas, solo yo como usuario y probablemente sin bloqueos, los numerosos artículos sobre problemas de rendimiento habituales del servidor SQL hablan de muchas cosas que no Realmente se aplica aquí. Parece que SQL-Server quiere concentrarse exclusivamente en alguna tarea interna.
Esta es una máquina virtual con 2GB de RAM y doble Xeon a 2GHz. También tengo VS2016 y es realmente rápido. Sin antivirus, ni siquiera Windows Defender. Ya tarde aquí. Probaré el sp_whoisactive mañana. Realmente me pregunto QUÉ está haciendo SQL Server allí ... En la máquina anterior con 1 GB, la misma base de datos se ejecutó bajo SQLServer2005 durante 10 años sin problemas ...
No soy un experto en SQL-Profiler. ¿Dónde debería comenzar a buscar?
fuente
auto_update_statistics_async
estaba activada.Respuestas:
Como la utilización de su CPU es baja (y tiene un excelente conjunto de CPU), primero verificaría la presión de la memoria. Con SQL Express 2016, está limitado a 1410 MB de memoria, pero su VM solo tiene 2 GB. Dele a su VM 1GB más de memoria y vea si eso ayuda. También puede verificar su registro de SQL Server si está paginando memoria al archivo.
Si eso no funciona, intente configurar la base de datos LEGACY_CARDINALITY_ESTIMATION en ON. Referencia: Uso del nivel de compatibilidad de base de datos 130 con CE antiguo en SQL Server 2016 . Nos encontramos con esto con algunas de nuestras actualizaciones; Los resultados variarán con cada base de datos.
fuente
El siguiente parche describe un problema similar. Puede valer la pena intentarlo:
https://support.microsoft.com/en-us/help/3195888/fix-high-cpu-usage-causes-performance-issues-in-sql-server-2016
fuente