REVISIÓN: Un rendimiento lento ocurre en SQL Server 2008 R2 o en SQL Server 2012 si uso intensivo de la CPU se observa con contención sobre el bloqueo por bucle QUERY_EXEC_STATS

Seleccione idioma Seleccione idioma
Id. de artículo: 2662301 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Microsoft distribuye Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) o Microsoft SQL Server 2012 se corrige en un archivo descargable. Dado que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y publicación de la actualización de todas las actualizaciones de seguridad que se incluyeron con la anterior SQL Server 2008 R2 Service Pack 1 (SP1) o Microsoft SQL Server 2012.

Síntomas

Tenga en cuenta la situación siguiente:
  • Instalar una instancia de Microsoft SQL Server 2008 R2 o Microsoft SQL Server 2012 en un equipo.
  • Las declaraciones simultáneas similares a los siguientes se ejecutan en la instancia:
    CREATE PROC p AS RETURN (
    query
    ); EXEC p;
    O bien, ejecutar una consulta que contiene el código siguiente:

    IF EXISTS(
    subquery
    );
  • El uso de CPU es alto, y los subprocesos de trabajo están en estado se puede ejecutar.
  • La contención de la QUERY_EXEC_STATS bloqueo por bucle es alto.
    Por ejemplo, el recuento circular, las posibles colisiones y los valores de interrupción de la QUERY_EXEC_STATS bloqueo por bucle aumentar rápidamente.
    Nota Para obtener más información acerca de cómo supervisar el QUERY_EXEC_STATS bloqueo por bucle, consulte la sección "Más información".

En este escenario, podría producirse un rendimiento lento.

Causa

De este problema debido a que se produce SQL Server 2008 R2 o SQL Server 2012 crea y destruye algunas estructuras de memoria acerca de las estadísticas globales en lugar de guardarlas en la caché. Esto hace que un cuello de botella de rendimiento.

Solución

Información sobre la actualización acumulativa

SQL Server de 2012

La solución a este problema se lanzó en primer lugar en la actualización acumulativa 1 para SQL Server 2012. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2679368 Paquete de actualización acumulativa 1 para el año 2012 de SQL Server
Nota Debido a que las compilaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluye con el año 2012 de SQL Server anterior. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2692828 Se basa el 2012 de SQL Server que se publicaron después del lanzamiento de SQL Server 2012
Debe aplicar una revisión de 2012 de SQL Server a una instalación de SQL Server 2012.

Paquete de actualización acumulativa 5 para SQL Server 2008 R2 SP1

La solución a este problema en primer lugar se publicó en 5 actualización acumulativa. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008 R2 SP1, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2659694 Paquete de actualización acumulativa 5 para SQL Server 2008 R2 SP1
Nota Debido a que las compilaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior SQL Server 2008 R2 SP1. Le recomendamos que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2567616 SQL Server 2008 R2 generaciones que se publicaron después del lanzamiento de SQL Server 2008 R2 SP1

Más información

Para supervisar el bloqueo por bucle QUERY_EXEC_STATS , ajustar el retraso y el número de iteraciones según corresponda para su entorno en el código siguiente y, a continuación, ejecutarlo:

SET NOCOUNT ON
CREATE TABLE #spins([Spinlock Name] varchar(50),Collisions numeric,Spins numeric,[Spins/Collision] float,[Sleep Time (ms)] numeric,Backoffs numeric, InsertTime datetime DEFAULT GETDATE())
DECLARE @counter int = 1
WHILE @counter < 10
      BEGIN
            INSERT INTO #spins ([Spinlock Name], Collisions, Spins, [Spins/Collision], [Sleep Time (ms)], Backoffs) EXECUTE ('DBCC SQLPERF (''SPINLOCKSTATS'') WITH NO_INFOMSGS')
            WAITFOR DELAY '00:00:05'
            SET @counter +=1
      END
SELECT * FROM #spins WHERE [Spinlock Name] = 'QUERY_EXEC_STATS' ORDER BY InsertTime
DROP TABLE #spins

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Se refiere a:".

Propiedades

Id. de artículo: 2662301 - Última revisión: jueves, 12 de abril de 2012 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
Palabras clave: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2662301 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 2662301

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com