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
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
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
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