Административные скрипты MS SQL > DBCC FREEPROCCACHE (Transact-SQL)
28.05.2018 13:01:45
Наиболее часто встречающиеся слова в статье:
[процедур] [FREEPROCCACHE] [запросов] [ресурсов] [получить] [удаляет] [помощью] [дескриптора] [хранимых] [скомпилированных]
Статья:
Удаляет все элементы из кэша планов, удаляет заданный план из кэша планов с помощью указания дескриптора плана или дескриптора 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.