DBCC FREESYSTEMCACHE (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Libera todas las entradas de caché no utilizadas de todas las memorias caché. El Motor de base de datos de SQL Server limpia automáticamente y en segundo plano todas las entradas de caché no utilizadas para permitir que haya memoria disponible para las entradas actuales. Sin embargo, puede usar este comando para quitar de forma manual las entradas no usadas de todas las cachés o de la caché especificada de un grupo de Resource Governor.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DBCC FREESYSTEMCACHE
    ( 'ALL' [ , pool_name ] )
    [ WITH
    { [ MARK_IN_USE_FOR_REMOVAL ] , [ NO_INFOMSGS ]  }
    ]

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

( 'ALL' [ , pool_name ] )

  • ALL

    Especifica todas las memorias caché compatibles.

  • pool_name

    Especifica una memoria caché de conjunto del regulador de recursos. Solo se liberarán las entradas asociadas a este grupo. Para enumerar los nombres de grupo disponibles, ejecute:

    SELECT name FROM sys.dm_resource_governor_resource_pools;
    

La mayoría de las cachés se pueden liberar individualmente con este comando, aunque no todas.

MARK_IN_USE_FOR_REMOVAL

Libera asincrónicamente las entradas utilizadas actualmente de sus respectivas cachés después de que dejan de usarse. Después de que se ejecute DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL, las nuevas entradas creadas en la cachéno se ven afectadas.

NO_INFOMSGS

Suprime todos los mensajes de información.

Observaciones

Al ejecutar DBCC FREESYSTEMCACHE se borra la caché de planes para la instancia de SQL Server. Al borrar la caché de planes, se provoca una nueva compilación de todos los planes de ejecución próximos, lo que puede dar lugar a una reducción repentina y temporal del rendimiento de las consultas. Para cada almacén de caché borrado de la caché de planes, el registro de errores de SQL Server contiene el siguiente mensaje informativo:

SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.

Este mensaje se registra cada cinco minutos siempre que se vacíe la memoria caché dentro de ese intervalo de tiempo.

Conjuntos de resultados

DBCC FREESYSTEMCACHE devuelve lo siguiente:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Permisos

Requiere el permiso ALTER SERVER STATE en el servidor.

Ejemplos

A. Liberar las entradas no utilizadas de una memoria caché de conjunto de Resource Governor

En el ejemplo siguiente se muestra cómo limpiar memorias caché que están dedicadas a un grupo de recursos de servidor del regulador de recursos especificado.

-- Clean all the caches with entries specific to the
-- resource pool named "default".
DBCC FREESYSTEMCACHE ('ALL', [default]);

B. Liberar las entradas de sus memorias caché respectivas una vez que dejan de ser utilizadas

En el ejemplo siguiente 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 dejan de ser utilizadas.

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;

Consulte también