DBCC FREEPROCCACHE (Transact-SQL)

Административные скрипты MS SQL > DBCC FREEPROCCACHE (Transact-SQL)
28.05.2018 13:01:45



Статья:

Удаляет все элементы из кэша планов, удаляет заданный план из кэша планов с помощью указания дескриптора плана или дескриптора SQL либо удаляет все записи кэша, связанные с указанным пулом ресурсов.

DBCC FREEPROCCACHE не очищает статистику выполнения для хранимых процедур, скомпилированных в собственном коде. Кэш процедур не содержит сведения о хранимых процедурах, скомпилированных в собственном коде. 

Синтаксис для SQL Server:

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

Аргументы

( { plan_handle | sql_handle | pool_name } )
plan_handle уникально идентифицирует план запроса для запущенного пакета, план которого хранится в кэше планов. Аргумент plan_handle имеет тип varbinary(64), и его можно получить из следующих объектов DMO:

  • sys.dm_exec_cached_plans
  • sys.dm_exec_requests
  • sys.dm_exec_query_memory_grants
  • sys.dm_exec_query_stats

sql_handle представляет дескриптор SQL очищаемого пакета. Аргумент sql_handle имеет тип varbinary(64), и его можно получить из следующих объектов DMO:

  • sys.dm_exec_query_stats
  • sys.dm_exec_requests
  • sys.dm_exec_cursors
  • sys.dm_exec_xml_handles
  • sys.dm_exec_query_memory_grants

pool_name представляет имя пула ресурсов Resource Governor. Аргумент pool_name имеет тип sysname и может быть получен с помощью запроса к динамическому административному представлению sys.dm_resource_governor_resource_pools.
Чтобы связать группу рабочей нагрузки Resource Governor с пулом ресурсов, запросите динамическое административное представление sys.dm_resource_governor_workload_groups.Чтобы получить сведения о группе рабочей нагрузки для сеанса, запросите динамическое административное представление sys.dm_exec_sessions.

WITH NO_INFOMSGS
Подавляет вывод всех информационных сообщений.

COMPUTE
Очистка кэша планов запросов в каждом вычислительном узле. Это значение по умолчанию.

ALL
Очистка кэша планов запросов в каждом вычислительном узле и в управляющем узле.

Начиная с версии SQL Server 2016 (13.x), для очистки кэша процедур (планов) для базы данных в области действия служит инструкция ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE.

Инструкция DBCC FREEPROCCACHE используется для аккуратной очистки кэша планов. Очистка кэша процедур (планов) приводит к исключению всех планов. В результате при выполнении входящих запросов будет компилироваться новый план, а не использоваться существующий план из кэша.

Это может стать причиной внезапного временного снижения производительности обработки запросов из-за увеличения числа компиляций. Для каждого удаленного хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение: " SQL Server обнаружил %d экземпляров, сброшенных на диск хранилищ кэша для хранилища кэша "%s" (части кэша планов) в результате операций DBCC FREEPROCCACHE или DBCC FREESYSTEMCACHE". Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.

Следующие операции по перенастройке также очищают кэш процедур:

  • доступ к счетчику контейнеров проверки кэша
  • доступ к квоте кэша проверки
  • clr enabled
  • стоимостный порог для параллелизма
  • cross db ownership chaining
  • память для создания индекса
  • максимальная степень параллелизма
  • max server memory
  • max text repl size
  • максимальное количество рабочих потоков
  • min memory per query
  • min server memory
  • ограничение стоимости регулятора запросов
  • ожидание запроса
  • remote query timeout
  • user options

Разрешения

Применимо к: SQL Server, Параллельное хранилище данных

  • Требует разрешения ALTER SERVER STATE на сервере.

Применимо к: Хранилище данных SQL

  • Необходимо членство в предопределенной роли сервера DB_OWNER.