none
Stored solo se ejecuta cuando lo vuelvo a crear RRS feed

  • Pregunta

  • Buen día.

    Mi situación  es que tengo un stored procedure se ejecuta a través de un sistema desarrollado en C# .NET MVC y funciona bien pero después de  cierto periodo de tiempo tarda en responder , al inicio creí que era por el desarrollo pero lo ejecute directamente en en el gestor de base de datos y aun así tardaba en responder .

    Alguno de ustedes tendrá idea de cual puede ser el problema?.

    Saludos

    miércoles, 2 de enero de 2019 16:07

Respuestas

  • Solo como un complemento a la respuesta de Alberto, te recomiendo este articulo de Kimberly Tripp:

    http://www.sqlskills.com/blogs/kimberly/stored-procedures-recompilation-and-netrocks/

    Puntos clasves que debes evaluar, que metodo aplicas para la gestión de mantenimiento de tus indices, estadisticas.  Segundo punto, esta consulta es susceptible de problemas relacionados con Parameter Sniffing, bueno, PS no es un problema sino una caracteristica genial que permite optimizar y reusar la cache (data cache), pero debes revisar la distribución de datos y tomar una decisión acerca de la mejor forma de optimizarla, Recompile (que tan costoso es en terminos de CPU y cuantas veces se invoca por minuto ese SP), optimizar el SP para determinados valores, dividir el SP en dos SP que gestionen la carga de datos en base a los parametros de entrada, hay un curso en Pluralsigh sobre este tema, te lo recomiendo.


    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    miércoles, 2 de enero de 2019 17:35

Todas las respuestas

  • La razón de que un SP al principio vaya rápido y luego despacio es que haya variado el plan óptimo de ejecución. El plan se salva en el momento de crear el SP. Si en ese momento, por ejemplo, hay pocos datos en las tablas, pues entonces el plan óptimo será un barrido secuencial de los datos (full table scan). Pero si luego se añaden muchos registros en las tablas, ese plan se vuelve ineficaz y es muy lento en comparación con una búsqueda usando los índices.

    Si borras y vuelves a crear el SP, se optimiza de nuevo el plan con los datos que existen en ese momento, y entonces salva un plan que utiliza los índices y por eso vuelve a ser rápido.

    Pero no hace falta volver a crear el SP. Hay otras formas de decirle que le vuelva a optimizar debido a un cambio en los datos. Una forma de hacerlo es llamar a SP_RECOMPILE pasándole los parámetros necesarios para decirle cuáles son los SP que tiene que recompilar. Otra es ejecutarlo llamando a EXEC procedimiento... WITH RECOMPILE. Y la tercera es crearlo con la opción "with recompile". Ojo, esta última hace que se recompile todas las veces que se ejecute, con lo que se vuelve muy lento si el coste de recompilarlo es grande en comparación con el coste de ejecutarlo.

    miércoles, 2 de enero de 2019 16:26
  • Solo como un complemento a la respuesta de Alberto, te recomiendo este articulo de Kimberly Tripp:

    http://www.sqlskills.com/blogs/kimberly/stored-procedures-recompilation-and-netrocks/

    Puntos clasves que debes evaluar, que metodo aplicas para la gestión de mantenimiento de tus indices, estadisticas.  Segundo punto, esta consulta es susceptible de problemas relacionados con Parameter Sniffing, bueno, PS no es un problema sino una caracteristica genial que permite optimizar y reusar la cache (data cache), pero debes revisar la distribución de datos y tomar una decisión acerca de la mejor forma de optimizarla, Recompile (que tan costoso es en terminos de CPU y cuantas veces se invoca por minuto ese SP), optimizar el SP para determinados valores, dividir el SP en dos SP que gestionen la carga de datos en base a los parametros de entrada, hay un curso en Pluralsigh sobre este tema, te lo recomiendo.


    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    miércoles, 2 de enero de 2019 17:35