viernes, 10 de noviembre de 2017

SQL Server DBCC FREESESSIONCACHE y FREESYSTEMCACHE

Comandos DBCC FREESESSIONCACHE y FREESYSTEMCACHE

Ya se ha indicado, cuando comencé con los Comandos DBCC, sobre los comandos misceláneos, que existen estos dos comandos que nos ayudan a la limpieza del espacio denominado cache, uno para el relacionado con las conexiones generadas por las consultas distribuidas y otro para liberar toda el espacio de cache que no se esté utilizando en el sistema.

DBCC FREESESSIONCACHE


Este comando lleva a cabo el vaciado de la caché de conexión de consulta distribuida que se utiliza por las consultas distribuidas en una instancia de Microsoft SQL Server. Pero, ¿qué significa esto? Es importante indicar que muchas veces se llevan a cabo consultas que implican la existencia de datos en diferentes servidores y esto genera un espacio de cache para mantener la conexión de datos, en este sentido, este comando solo es útil cuando se llevan a cabo consultas distribuidas, ya que se liberará el espacio ocupado por la realización de este tipo de consultas.
La sintaxis que se usa para este comando es:

DBCC FREESESSIONCACHE;
Este comando libera el cache de consultas distribuidas utilizado en la base de datos actual. 

Existe un argumento opcional que puede ser utilizado con el comando, éste es:

WITH NO_INFOMSGS
Suprime todos los mensajes informativos.

DBCC FREESYSTEMCACHE

Ya se ha indicado que éste comando libera todas las entradas de caché no utilizadas de todas las memorias caché. Esto es, el Motor de base de datos de Microsoft SQL Server limpia de forma automática y en segundo plano todas las entradas de caché no utilizadas, lo que permite que haya memoria disponible para las entradas actuales. No obstante, es posible utilizar este comando para liberar de forma manual las entradas no usadas de todas las memorias caché o de una memoria caché especifica de un grupo del regulador de recursos.
La sintaxis que se usa más a menudo para este comando es:

DBCC FREESYSTEMCACHE ('ALL');
En este caso se indica que se libere el espacio de cache utilizado por todas las memorias compatibles. 

Existen algunos argumentos opcionales que puede ser utilizado con el comando, los cuales son:

Pool_name
Especifica una cache de grupo del regulador de recursos, de tal forma que solo se liberaran las entradas asociadas a este grupo, se utiliza en conjunto con ‘ALL’.
MARK_IN_USE_FOR_REMOVAL
Libera asincrónicamente las entradas utilizadas actualmente de sus respectivas cachés después de que dejan de utilizarse. No se verán afectadas las nuevas entradas creadas en la memoria caché después de ejecutar el comando.
WITH NO_INFOMSGS
Suprime todos los mensajes informativos.


Ejemplos de DBCC FREESYSTEMCACHE


Mostraré algunos ejemplos de uso de este comando:

DBCC FREESYSTEMCACHE ('ALL', default); 
Se limpiará la memoria caché que está dedicada a un grupo de recursos de servidor del regulador de recursos denominado default.

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL; 
En este ejemplo, se utiliza la cláusula MARK_IN_USE_FOR_REMOVAL para liberar las entradas de todas las memorias caché actuales una vez que las entradas dejen de ser utilizadas.

Comentarios


Si bien, el uso del comando DBCC FREESESSIONCACHE puede ser uno de los menos utilizados, conviene tenerlo presente cuando se trabaja con consultas distribuidas. No hay nada más que señalar con respecto a este comando.
Ahora bien, el uso del comando DBCC FREESYSTEMCACHE al borrar la memoria caché de planes, se provoca que se lleve a cabo la nueva compilación de todos los planes de ejecución posteriores y puede ocasionar una disminución repentina y temporal del rendimiento de las consultas. Para cada uno de los almacenes de caché que se ha borrado de la caché del plan, el registro de Microsoft SQL Server contendrá el siguiente mensaje informativo: " SQL Server ha detectado %d instancias de vaciado del almacén de caché '%s' (parte de la caché del plan) debido a operaciones 'DBCC FREEPROCCACHE' o 'DBCC FREESYSTEMCACHE'".

Se recomienda el uso de estos comandos con discreción, ya que el uso continuo causara la degradación del rendimiento de las consultas, dado que cada vez que se libera el espacio de cache, se llevara a cabo la re-compilación de las consultas.

No hay comentarios.:

Publicar un comentario