viernes, 27 de octubre de 2017

SQL Server DBCC FREEPROCCACHE

Comando DBCC FREEPROCCACHE      

Ya hemos indicado, cuando se mencionaron los Comandos DBCC,  indicado como comando de mantenimiento,  que quita todos los elementos de la memoria caché del plan de ejecución, quita un plan de ejecución concreto de la misma especificando un identificador de plan o un identificador SQL, o quita todas las entradas de caché asociadas a un grupo de recursos de servidor especificado.

Se debe hacer notar que el comando no borra las estadísticas de ejecución para los procedimientos almacenados compilados de forma nativa.
La sintaxis de este comando, en su forma más simple, es:

USE master;
GO
DBCC FREEPROCCACHE
Lo cual permitirá quitar todos los elementos de la memoria caché de planes de ejecución.

La sintaxis que se usa más a menudo es:
USE master;
GO

DBCC FREEPROCCACHE ({ plan_handle | sql_handle | pool_name })
Como puede observarse, se utilizara un número de plan_handle o sql_handle, definido como varbinary(64) que puede ser obtenido usando algunas consultas a las vistas de administración dinámica;
  •          Sys.dm_exec_cached_plans 
  •          Sys.dm_exec_requests 
  •          Sys.dm_exec_query_memory_grants 
  •          Sys.dm_exec_query_stats
pool_name es del tipo  sysname y puede obtenerse consultando la vista de administración dinámica sys.dm_resource_governor_resource_pools.
Existen algunas opciones que pueden ser utilizadas con el comando, estas opciones son:

WITH NO_INFOMSGS
Suprime todos los mensajes informativos.
COMPUTE
Purgar la caché del plan de consulta de cada nodo de ejecución. Es el valor predeterminado..  Este parámetro es aplicable en SQL Azure y Parallel Data Warehouse.
ALL
Purgar la caché del plan de consulta de cada nodo de ejecución y desde el nodo de Control. Este es el valor predeterminado si no especifica un valor. Parámetro aplicable en SQL Azure y Parallel Data Warehouse.

Ejemplos de DBCC FREEPROCCACHE


Mostraré algunos ejemplos de uso de este comando:
USE master;
GO
DBCC FREEPROCCACHE WITH NO_INFOMSGS
Este comando quita todos los elementos de la memoria caché del plan de ejecución, sin informar sobre la ejecución, sólo indicando finalización.


DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
Este comando borrar únicamente el plan de ejecución indicado de la memoria caché del plan. Hay que recordar que este puede obtenerse de una vista de administración dinámica que ya se han indicado.


DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;
Este comando quita todas las cachés de plan de consulta existente de los nodos de proceso, en una base de datos que se encuentre en SQL Azure o en Parallel Data Warehouse.

Comentarios


Es importante mencionar el uso de este comando puede ocasionar una disminución repentina y temporal en el rendimiento de las consultas debido al incremento del número de nuevas compilaciones. Es posible que se lleve a cabo la limpieza de los búferes cuando se lleva a cabo alguna modificación a las siguientes opciones de configuración de Microsoft SQL Server:
  •          access check cache bucket count 
  •          access check cache quota 
  •          clr enabled 
  •          cost threshold for parallelism 
  •          cross db ownership chaining 
  •          index create memory 
  •          max degree of parallelism 
  •          max server memory
  •          max text repl size 
  •          max worker threads 
  •          min server memory
  •          min memory per query
  •          query governor cost limit 
  •          query wait 
  •          remote query timeout 
  •          user options FILESTREAM stores binary large objects (BLOBS) on the file system.
FILESTREAM stores binary large objects (BLOBS) on the file system.
Si se llega a modificar alguna de las opciones anteriores, en un servidor del ambiente de producción, es posible que el rendimiento de ejecución de las consultas se vea degradado, ya que se debe generar nuevamente el plan de ejecución.

Nota: En posteriores entregas se llevará a cabo un análisis de las opciones de configuración de servicios de Microsoft SQL Server, como las que aquí se indican, para que se vaya entendiendo cada uno de ellos.

No hay comentarios.:

Publicar un comentario