¿Qué problemas indica un spool ansioso?

27

Actualmente se ejecuta en SQL Server 2008 R2

Estoy intentando aumentar el rendimiento de una declaración ACTUALIZAR. Noto que aparece una operación Eager Spool en el plan de presentación. Mi comprensión de las operaciones de spooling es bastante básica: crean almacenamiento temporal para la tabla durante la actualización.

También sé que, si bien evitan tiempos de ejecución mucho peores, los spools ansiosos a menudo indican problemas subyacentes con la estructura de la tabla y / o las declaraciones de consulta.

Mi pregunta es bastante simple: cuando ve un Eager Spool en su plan de consultas, ¿qué problemas busca abordar primero?

Analizaré cada parte de nuestro sistema para aumentar el rendimiento; solo estoy buscando orientación sobre dónde debo comenzar.

Nick Vaccaro
fuente
¿Puedes mostrar el plan? Los carretes pueden significar muchas cosas diferentes.
usr
Y otro par de casos en los que esto podría aparecer en un UPDATEcaso es si la tabla tiene una clave externa autorreferenciada o accede a UDF que acceden a datos o no están vinculados a un esquema
Martin Smith

Respuestas:

18

Estoy intentando aumentar el rendimiento de una declaración ACTUALIZAR. Noto que aparece una operación Eager Spool en el plan de presentación.

Se pueden agregar Eager Spools por una variedad de razones, incluida la Protección de Halloween , o para optimizar la E / S cuando se mantienen índices no agrupados .

Sin ver (ni siquiera una imagen de) el plan de ejecución, es difícil estar seguro de cuál de estos escenarios podría aplicarse en su caso particular. Si la sensibilidad de los datos es una preocupación, considere cargar una versión anónima del plan para su análisis utilizando SentryOne Plan Explorer .

Bien puede ser que el Eager Spool no sea en lo que debería concentrarse de todos modos; Muchos factores influyen en el rendimiento real de las consultas que cambian los datos. Si basa sus esfuerzos de ajuste en el costo porcentual estimado que se muestra para el operador Eager Spool, considere que esas estimaciones se generan utilizando un modelo que no está diseñado para coincidir con las capacidades de su configuración de hardware particular.

Paul White dice GoFundMonica
fuente
2

A veces, el ansioso carrete se puede evitar cuando otros operadores de bloqueo están en su lugar, por ejemplo, por ejemplo. Por lo tanto, es una buena idea asegurarse de que los datos ya estén ordenados para cuando llegue a esa etapa. (¿Quizás faltan índices?)

Si está allí para la protección de Halloween, como los otros muchachos han dicho, hay poco que puedas hacer.

John Alan
fuente