DBCC FREESYSTEMCACHE (Transact-SQL)

Удаляет все неиспользуемые элементы из всех кэшей. Компонент SQL Server Database Engine заранее автоматически очищает неиспользуемые элементы кэша в фоновом режиме, освобождая память для текущих записей. Однако можно использовать эту команду, чтобы вручную удалить неиспользуемые записи из всех кэшей или из указанного кэша пула регулятора ресурсов.

Значок ссылки на разделСоглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

  • ( 'ALL' [, pool_name ] )
    Ключевое слово ALL указывает все поддерживаемые кэши.

    Аргумент pool_name указывает кэш пула регулятора ресурсов. Освобождены будут только записи, связанные с этим пулом.

  • MARK_IN_USE_FOR_REMOVAL
    Асинхронно освобождает текущие используемые элементы из соответствующих кэшей после того, как они перестают использоваться. Не влияет на новые элементы, созданные в кэше после выполнения DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL.

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

Результирующие наборы

Инструкция DBCC FREESYSTEMCACHE возвращает:

«Выполнение инструкции DBCC завершено. Если инструкция DBCC выдает сообщения об ошибках, обратитесь к системному администратору.»

Замечания

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

Разрешения

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

Примеры

А. Освобождение неиспользуемых записей кэша из кэша пула регулятора ресурсов

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

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

Б. Освобождение записей из кэшей после прекращения их использования

В следующем примере используется предложение MARK_IN_USE_FOR_REMOVAL, чтобы освободить записи из всех текущих кэшей, когда записи становятся неиспользуемыми.

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;