Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Síntomas

Imagine la siguiente situación:

  • Tiene una tabla que tiene índices de almacén de columnas agrupados, y la tabla tiene muchas columnas (en centenares).

  • Los datos (tipo de datos) de estas columnas son datos muy comprimible, como VARCHAR.

  • Ejecute una instrucción Select en esta tabla para seleccionar un subconjunto grande o todas las columnas de esta tabla.

  • La instrucción Select tiene una cláusula Where que limita la salida a muy pocas filas (la consulta es muy selectiva).

En este caso, es posible que se encuentre alguno de los síntomas siguientes:

  • La carga de trabajo concurrente (otras consultas que se ejecutan al mismo tiempo en el servidor que esta consulta) puede encontrarse con una disminución en el rendimiento y la pérdida de rendimiento.

  • Es posible que vea un uso intensivo de la CPU.

  • Si consulta Sys.dm_os_ring_buffers y visualiza entradas de tipo SchedulerMonitor , encontrará mensajes "programador no degenerado" intermitentes registrados durante la ejecución de esta consulta.

  • Es posible que reciba un error de programador no rinde en el registro de errores y que se genere un archivo de volcado de memoria de síntomas.

Solución

El problema se solucionó por primera vez en la siguiente actualización acumulativa de SQL Server:

Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Le recomendamos que descargue e instale las últimas actualizaciones acumulativas de SQL Server:

Más información

Corregir detallesLos trabajadores que procesan los segmentos de columna (descomprimirlos y explorarlos para buscar filas) se usan para "producir" el uso de la CPU para otros trabajadores o ejecuciones de consultas simultáneas cuando se ha generado un determinado límite de número de filas. Cuando la cláusula Where era realmente selectiva para producir pocas filas, los trabajadores que procesan esta consulta procesaron la cantidad de segmentos descomprimidos y grandes (porque muy pocas filas se pueden habilitar) antes de que pongan la CPU en forma cooperativa para que otros trabajadores puedan procesar su carga de trabajo. Esto llevó a una degradación del rendimiento y al uso de la CPU irregular para la carga de trabajo simultánea. La corrección optimiza y mejora el algoritmo de uso compartido de CPU para estas consultas de almacén de columnas.

Referencias

Obtenga más información sobre la terminología que Microsoft usa para describir las actualizaciones de software.

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.