none
Se borran los Planes de Ejecución RRS feed

  • Pregunta

  • Muy buenas a todos,

    Estoy teniendo problemas con los planes de ejecución, cada vez que consulto la vista de sistemas sys.dm_exec_query_stats observo que un instante tengo 100 registros, luego 0 vuelve a 200 o mas y al minuto nuevamente en 0.

    Estoy tratando de identificar que proceso podría estar borrando los planes de ejecución de las bases de datos pero no encuentro nada.

    Busque en todos los objetos de las bases de datos si existe algún procedimiento que haga un llamado a un FREEPROCCACHE, FREESYSTEMCACHE, FLUSHPROCINDB...y no hay ninguno que haga eso, tampoco ninguno hace recompile.

    Lo que si veo es que se realizan centenares de llamadas a ejecutar procedimientos almacenados, se crean procedimientos almacenados...

    algo me dice que en la ejecución y creaciones automáticas de esos procedimientos es que ese borran los planes de ejecución de todas las bases de datos. algo a nivel de la aplicación u otro asunto

    Si alguien tiene algún dato que me sirva para encontrar este problema.

    No hay planes de mantenimiento solo un backup que se ejecuta de madrugada.

    Saludos y muchas gracias

    viernes, 15 de diciembre de 2017 22:24

Respuestas

  • Mira, lo primero que te aconsejo es que verifiques que a nivel de tu servidor no tienes configurada la propiedad auto-close a true, aquí un articulo que te puede ayudar: http://www.itprotoday.com/worst-practice-allowing-autoclose-sql-server-databases

    Segundo, verifica que no tenga dentro de tu servidor ninguna llamada o ejecución de una sentencia como:

    dbcc sqlperf(sys.dm_os_wait_stats,clear)

    Si en ambos casos no encuentras nada raro, lo indicado es que configures un Extended Event y te permita evaluar si efectivamente hay un proceso que este realizando la limpieza de la cache, aqui otro enlace: https://blogs.msdn.microsoft.com/sqlprogrammability/2007/01/19/12-0-plan-cache-trace-events-and-performance-counters/

    Prueba lo que te he mencionado y nos comentas como te fue.


    "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

    sábado, 16 de diciembre de 2017 13:04
  • Saludos

    Lamentablemente mucho de esto es por conversaciones, pero aqui hay un buen post sobre el tema.

    https://dba.stackexchange.com/questions/182227/sql-server-clears-plan-cache-and-execution-stats-periodically

    Como dije hasta donde se nadie a dado con que lo causa, la mejor teoria que vi era que tenia que ver con multiplos de RAM y configuraciones de la misma pero no fue comprobada.

    lunes, 18 de diciembre de 2017 22:38

Todas las respuestas

  • Es un SQL Server 2012 Estandar
    viernes, 15 de diciembre de 2017 22:30
  • Mira, lo primero que te aconsejo es que verifiques que a nivel de tu servidor no tienes configurada la propiedad auto-close a true, aquí un articulo que te puede ayudar: http://www.itprotoday.com/worst-practice-allowing-autoclose-sql-server-databases

    Segundo, verifica que no tenga dentro de tu servidor ninguna llamada o ejecución de una sentencia como:

    dbcc sqlperf(sys.dm_os_wait_stats,clear)

    Si en ambos casos no encuentras nada raro, lo indicado es que configures un Extended Event y te permita evaluar si efectivamente hay un proceso que este realizando la limpieza de la cache, aqui otro enlace: https://blogs.msdn.microsoft.com/sqlprogrammability/2007/01/19/12-0-plan-cache-trace-events-and-performance-counters/

    Prueba lo que te he mencionado y nos comentas como te fue.


    "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

    sábado, 16 de diciembre de 2017 13:04
  • Existe un problema ya bastante documentado sobre que bajo ciertas circunstancias sql hace esto aun sin presion en sus recursos, hasta donde se no lo han podido reproducir ni saben que lo causa, lo he visto en 2012 y 2014 suena mucho a lo que estas pasando podrias dar mas informacion? 
    lunes, 18 de diciembre de 2017 15:43
  • Hola Enrique AA

    Básicamente es como si estuvieran haciendo un  DBCC FREEPROCCACHE constantemente al servidor y es variante el tiempo (1 segundo, 1 minuto, 30 seg...etc), ya que  realice una búsqueda de un plan de ejecución para una consulta en especifica y resulta que no existía plan de ejecución alguno osea ninguno.

    Corríamos estas consultas y los resultados eran 0 en un momento, un minuto después validaba y habían 200, nuevamente validaba al instante y solo habian 10 y así sucesivamente.

    SELECT plan_handle, st.text  
    FROM sys.dm_exec_cached_plans   
    CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st 

    select * from sys.dm_exec_query_stats
    order by creation_time desc

    y el tema es que aun no identifico que proceso podría estar haciendo que esto ocurra, los desarrolladores me comentan que no tienen nada que en sus aplicaciones que borre el cache plan del servidor

    Estoy tratando de aplicar lo que envió Geovanny -Gio- Hernandez a ver si encontramos algo que nos ayude a identificar el problema.

    Saludos y muchas gracias

    lunes, 18 de diciembre de 2017 20:20
  • Saludos

    Lamentablemente mucho de esto es por conversaciones, pero aqui hay un buen post sobre el tema.

    https://dba.stackexchange.com/questions/182227/sql-server-clears-plan-cache-and-execution-stats-periodically

    Como dije hasta donde se nadie a dado con que lo causa, la mejor teoria que vi era que tenia que ver con multiplos de RAM y configuraciones de la misma pero no fue comprobada.

    lunes, 18 de diciembre de 2017 22:38
  • Muchas gracias, si ya veo que es un tema algo difícil de detectar

    Saludos

    martes, 19 de diciembre de 2017 17:36