Síntomas
Supongamos que tiene muchas estadísticas y tablas y que las tablas contienen muchas columnas en una base de datos de Microsoft SQL Server 2012 o SQL Server 2014. Al ejecutar muchas consultas ad hoc para recuperar datos de esas tablas simultáneamente, puede experimentar esperas de CMEMTHREAD durante la ejecución.
Resolución
Información de actualización acumulativa
El problema se corrigió por primera vez en la siguiente actualización acumulativa de SQL Server.
- Actualización acumulativa 2 para SQL Server 2014 SP1
- Actualización acumulativa 9 para SQL Server 2014
- Actualización acumulativa 7 para SQL Server 2012 SP2
Recomendación: Instalar la actualización acumulativa más reciente para SQL Server
Cada nueva actualización acumulativa de SQL Server contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Le recomendamos que descargue e instale las actualizaciones acumulativas más recientes para SQL Server:
- Actualización acumulativa más reciente para SQL Server 2014 SP1
- Actualización acumulativa más reciente de SQL Server 2014
- Actualización acumulativa más reciente para SQL Server 2012 SP2
Más información
Al compilar o volver a compilar una consulta en SQL Server 2012, el motor necesita obtener entradas del histograma de estadísticas. Debemos realizar un análisis de tabla del sistema y, a continuación, cargar el histograma específico de las tablas que están relacionadas con la memoria o la memoria caché. Estas entradas de la tabla del sistema (para las estadísticas) se almacenan en la caché de la tabla del sistema (CACHESTORE_SYSTEMROWSET). El objeto de memoria que se utiliza para crear estas entradas en la memoria caché no está particionado y es global.
Por lo tanto, si tiene asignaciones de memoria simultáneas realizadas durante esta operación, encontrará CMEMTHREAD espera en este objeto de memoria. Esto suele ocurrir cuando envía muchas consultas que requieren compilación o recompilación.
Esta revisión cambia el objeto de memoria global que se particiona para que las asignaciones de memoria simultáneas que utilizan la memoria caché de la tabla del sistema no encuentren contención y el CMEMTHREAD espera.
Para obtener más información sobre el problema similar, vea KB 3026082: CORRECCIÓN: SOS_CACHESTORE la contención de bloqueo de número en la caché de conjunto de filas de tabla del sistema provoca un uso elevado de la CPU en SQL Server 2012 o 2014.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".