DBCC FREEPROCCACHE (Transact-SQL)DBCC FREEPROCCACHE (Transact-SQL)

SE APLICA A: síSQL Server noAzure SQL Database síAzure Synapse Analytics (SQL DW) síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Quita todos los elementos de la memoria caché del plan, quita un plan 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.Removes all elements from the plan cache, removes a specific plan from the plan cache by specifying a plan handle or SQL handle, or removes all cache entries associated with a specified resource pool.

Nota

DBCC FREEPROCCACHE no borra las estadísticas de ejecución para los procedimientos almacenados compilados de forma nativa.DBCC FREEPROCCACHE does not clear the execution statistics for natively compiled stored procedures. La memoria caché de procedimientos no contiene información sobre los procedimientos almacenados compilados de forma nativa.The procedure cache does not contain information about natively compiled stored procedures. Las estadísticas de ejecución recopiladas de ejecuciones de procedimientos aparecerán en las DMV de estadísticas de ejecución: sys.dm_exec_procedure_stats (Transact-SQL) y sys.dm_exec_query_plan (Transact-SQL).Any execution statistics collected from procedure executions will appear in the execution statistics DMVs: sys.dm_exec_procedure_stats (Transact-SQL) and sys.dm_exec_query_plan (Transact-SQL).

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

Sintaxis para SQL Server:Syntax for SQL Server:

DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]  

Sintaxis para Azure SQL Data Warehouse y Almacenamiento de datos paralelos:Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse:

DBCC FREEPROCCACHE [ ( COMPUTE | ALL ) ] 
     [ WITH NO_INFOMSGS ]   
[;]  

ArgumentosArguments

( { plan_handle | sql_handle | pool_name } )( { plan_handle | sql_handle | pool_name } )
plan_handle identifica de forma exclusiva un plan de consulta de un lote que se ha ejecutado y cuyo plan reside en la memoria caché del plan.plan_handle uniquely identifies a query plan for a batch that has executed and whose plan resides in the plan cache. plan_handle es varbinary(64) y se puede obtener de los siguientes objetos de administración dinámica:plan_handle is varbinary(64) and can be obtained from the following dynamic management objects:

sql_handle es el identificador SQL del lote que se va a borrar.sql_handle is the SQL handle of the batch to be cleared. sql_handle es varbinary(64) y se puede obtener de los siguientes objetos de administración dinámica:sql_handle is varbinary(64) and can be obtained from the following dynamic management objects:

pool_name es el nombre de un grupo de recursos del regulador de recursos.pool_name is the name of a Resource Governor resource pool. pool_name es sysname y se puede obtener consultando la vista de administración dinámica sys.dm_resource_governor_resource_pools.pool_name is sysname and can be obtained by querying the sys.dm_resource_governor_resource_pools dynamic management view.
Para asociar un grupo de cargas de trabajo del regulador de recursos a un grupo de recursos, consulte la vista de administración dinámica sys.dm_resource_governor_workload_groups.To associate a Resource Governor workload group with a resource pool, query the sys.dm_resource_governor_workload_groups dynamic management view. Para más información sobre el grupo de cargas de trabajo de una sesión, consulte la vista de administración dinámica sys.dm_exec_sessions.For information about the workload group for a session, query the sys.dm_exec_sessions dynamic management view.

WITH NO_INFOMSGSWITH NO_INFOMSGS
Suprime todos los mensajes de información.Suppresses all informational messages.

COMPUTECOMPUTE
Purga la memoria caché del plan de consulta de cada nodo de ejecución.Purge the query plan cache from each Compute node. Este es el valor predeterminado.This is the default value.

ALLALL
Purga la memoria caché del plan de consulta de cada nodo de ejecución y del nodo de control.Purge the query plan cache from each Compute node and from the Control node.

Nota

Desde SQL Server 2016 (13.x)SQL Server 2016 (13.x), ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE borra la memoria caché (de plan) de procedimientos de la base de datos en ámbito.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), the ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE to clear the procedure (plan) cache for the database in scope.

NotasRemarks

Use DBCC FREEPROCCACHE con precaución para borrar la caché del plan.Use DBCC FREEPROCCACHE to clear the plan cache carefully. Borrar la memoria caché (de plan) de procedimientos hace que todos los planes se expulsen y las ejecuciones de consultas entrantes compilarán un nuevo plan, en lugar de volver a usar alguno de los planes previamente almacenados en caché.Clearing the procedure (plan) cache causes all plans to be evicted, and incoming query executions will compile a new plan, instead of reusing any previously cached plan.

Como consecuencia, el rendimiento de las consultas puede disminuir de manera repentina y temporal a medida que el número de compilaciones nuevas vaya aumentando.This can cause a sudden, temporary decrease in query performance as the number of new compilations increases. Para cada almacén de caché borrado de la caché del plan, el registro de errores de SQL ServerSQL Server contendrá el siguiente mensaje informativo: "SQL ServerSQL Server ha detectado %d instancias de vaciado del almacén de caché "%s" (parte de la caché del plan) debidas a operaciones "DBCC FREEPROCCACHE" o "DBCC FREESYSTEMCACHE"".For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log will contain the following informational message: " SQL ServerSQL 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.This message is logged every five minutes as long as the cache is flushed within that time interval.

Las siguientes operaciones de reconfiguración también borran la caché de procedimientos:The following reconfigure operations also clear the procedure cache:

  • access check cache bucket countaccess check cache bucket count
  • access check cache quotaaccess check cache quota
  • clr enabledclr enabled
  • cost threshold for parallelismcost threshold for parallelism
  • cross db ownership chainingcross db ownership chaining
  • index create memoryindex create memory
  • max degree of parallelismmax degree of parallelism
  • memoria de servidor máximamax server memory
  • max text repl sizemax text repl size
  • max worker threadsmax worker threads
  • memoria mínima por consultamin memory per query
  • memoria de servidor mínimamin server memory
  • query governor cost limitquery governor cost limit
  • query waitquery wait
  • remote query timeoutremote query timeout
  • user optionsuser options

Conjuntos de resultadosResult Sets

Si no se especifica la cláusula WITH NO_INFOMSGS, se devuelve DBCC FREEPROCCACHE: "Ejecución de DBCC completada.When the WITH NO_INFOMSGS clause is not specified, DBCC FREEPROCCACHE returns: "DBCC execution completed. Si DBCC imprime algún mensaje de error, póngase en contacto con su administrador del sistema."If DBCC printed error messages, contact your system administrator."

PermisosPermissions

Se aplica a: SQL ServerSQL Server, Almacenamiento de datos paralelosParallel Data WarehouseApplies to: SQL ServerSQL Server, Almacenamiento de datos paralelosParallel Data Warehouse

  • Requiere el permiso ALTER SERVER STATE en el servidor.Requires ALTER SERVER STATE permission on the server.

Se aplica a: Almacenamiento de datos SQLSQL Data WarehouseApplies to: Almacenamiento de datos SQLSQL Data Warehouse

  • Requiere pertenencia al rol fijo de servidor DB_OWNER.Requires membership in the DB_OWNER fixed server role.

Notas generales sobre Almacenamiento de datos SQLSQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseGeneral Remarks for Almacenamiento de datos SQLSQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

Se pueden ejecutar varios comandos DBCC FREEPROCCACHE a la vez.Multiple DBCC FREEPROCCACHE commands can be run concurrently. En Almacenamiento de datos SQLSQL Data Warehouse o Almacenamiento de datos paralelosParallel Data Warehouse, borrar la memoria caché de plan puede hacer que el rendimiento de las consultas disminuya temporalmente debido a que las consultas compilan un nuevo plan, en lugar de volver a usar alguno de los planes previamente almacenados en caché.In Almacenamiento de datos SQLSQL Data Warehouse or Almacenamiento de datos paralelosParallel Data Warehouse, clearing the plan cache can cause a temporary decrease in query performance as incoming queries compile a new plan, instead of reusing any previously cached plan.

DBCC FREEPROCCACHE (COMPUTE) solo hace que SQL ServerSQL Server vuelva a compilar las consultas cuando se ejecuten en los nodos de ejecución.DBCC FREEPROCCACHE (COMPUTE) only causes SQL ServerSQL Server to recompile queries when they are run on the Compute nodes. No hace que Almacenamiento de datos SQLSQL Data Warehouse o Almacenamiento de datos paralelosParallel Data Warehouse vuelvan a compilar el plan de consulta paralelo que se genera en el nodo de control.It does not cause Almacenamiento de datos SQLSQL Data Warehouse or Almacenamiento de datos paralelosParallel Data Warehouse to recompile the parallel query plan that is generated on the Control node. DBCC FREEPROCCACHE se puede cancelar durante su ejecución.DBCC FREEPROCCACHE can be cancelled during execution.

Limitaciones y restricciones de Almacenamiento de datos SQLSQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseLimitations and Restrictions for Almacenamiento de datos SQLSQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

DBCC FREEPROCCACHE no se puede ejecutar dentro de una transacción.DBCC FREEPROCCACHE can not run within a transaction. DBCC FREEPROCCACHE no se admite en una instrucción EXPLAIN.DBCC FREEPROCCACHE is not supported in an EXPLAIN statement.

Metadatos de Almacenamiento de datos SQLSQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseMetadata for Almacenamiento de datos SQLSQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

Cuando DBCC FREEPROCCACHE se ejecuta, se agrega una fila nueva a la vista del sistema sys.pdw_exec_requests.A new row is added to the sys.pdw_exec_requests system view when DBCC FREEPROCCACHE is run.

Ejemplos: SQL ServerSQL ServerExamples: SQL ServerSQL Server

A.A. Borrar un plan de consulta de la memoria caché del planClearing a query plan from the plan cache

En el ejemplo siguiente se especifica el identificador de plan de consulta para borrar el plan de consulta de la caché del plan.The following example clears a query plan from the plan cache by specifying the query plan handle. Para asegurarse de que la consulta del ejemplo está en la caché del plan, la consulta se ejecuta primero.To ensure the example query is in the plan cache, the query is first executed. Se consultan las vistas de administración dinámicas sys.dm_exec_cached_plans y sys.dm_exec_sql_text para obtener el identificador de plan de la consulta.The sys.dm_exec_cached_plans and sys.dm_exec_sql_text dynamic management views are queried to return the plan handle for the query.

A continuación, el valor del identificador de plan del conjunto de resultados se inserta en la instrucción DBCC FREEPROCACHE para borrar únicamente dicho plan de la memoria caché del plan.The plan handle value from the result set is then inserted into the DBCC FREEPROCACHE statement to remove only that plan from the plan cache.

USE AdventureWorks2012;  
GO  
SELECT * FROM Person.Address;  
GO  
SELECT plan_handle, st.text  
FROM sys.dm_exec_cached_plans   
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st  
WHERE text LIKE N'SELECT * FROM Person.Address%';  
GO  

El conjunto de resultados es el siguiente.Here is the result set.

plan_handle                                         text  
--------------------------------------------------  -----------------------------  
0x060006001ECA270EC0215D05000000000000000000000000  SELECT * FROM Person.Address;  
  
(1 row(s) affected)
-- Remove the specific plan from the cache.  
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);  
GO  

B.B. Borrar todos los planes de la memoria caché del planClearing all plans from the plan cache

En el ejemplo siguiente se borran todos los elementos de la memoria caché del plan.The following example clears all elements from the plan cache. La cláusula WITH NO_INFOMSGS se especifica para que no se muestre el mensaje informativo.The WITH NO_INFOMSGS clause is specified to prevent the information message from being displayed.

DBCC FREEPROCCACHE WITH NO_INFOMSGS;  

C.C. Borrar todas las entradas de caché asociadas a un grupo de recursosClearing all cache entries associated with a resource pool

En el ejemplo siguiente se borran todas las entradas de caché asociadas a un grupo de recursos de servidor especificado.The following example clears all cache entries associated with a specified resource pool. Primero, se consulta la vista sys.dm_resource_governor_resource_pools para obtener el valor de pool_name.The sys.dm_resource_governor_resource_pools view is first queried to obtain the value for pool_name.

SELECT * FROM sys.dm_resource_governor_resource_pools;  
GO  
DBCC FREEPROCCACHE ('default');  
GO  

Ejemplos: Almacenamiento de datos SQLSQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Almacenamiento de datos SQLSQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

D.D. Ejemplos de sintaxis básica de DBCC FREEPROCCACHEDBCC FREEPROCCACHE Basic Syntax Examples

En el siguiente ejemplo se quitan todas las memorias caché de plan de consulta existentes de los nodos de ejecución.The following example removes all existing query plan caches from the Compute nodes. Aunque el contexto está establecido en UserDbSales, se quitarán las memorias caché de plan de consulta de nodo de ejecución de todas las bases de datos.Although the context is set to UserDbSales, the Compute node query plan caches for all databases will be removed. La cláusula WITH NO_INFOMSGS impide que se muestren mensajes informativos en los resultados.The WITH NO_INFOMSGS clause prevents informational messages from appearing in the results.

USE UserDbSales;  
DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;

El siguiente ejemplo tiene los mismos resultados que el ejemplo anterior, salvo por el hecho de que se muestran mensajes informativos en los resultados.The following example has the same results as the previous example, except that informational messages will show in the results.

USE UserDbSales;  
DBCC FREEPROCCACHE (COMPUTE);  

Cuando se solicitan mensajes informativos y la ejecución finaliza correctamente, los resultados de la consulta tendrán una línea por cada nodo de ejecución.When informational messages are requested and the execution is successful, the query results will have one line per Compute node.

E.E. Conceder permiso para ejecutar DBCC FREEPROCCACHEGranting Permission to run DBCC FREEPROCCACHE

En el siguiente ejemplo se da permiso al usuario David para ejecutar DBCC FREEPROCCACHE.The following example gives the login David permission to run DBCC FREEPROCCACHE.

GRANT ALTER SERVER STATE TO David; 
GO

Consulte tambiénSee Also

DBCC (Transact-SQL)DBCC (Transact-SQL)
Regulador de recursosResource Governor
ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)