DBCC FREESYSTEMCACHE (Transact-SQL)

Применимо к:База данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure

Удаляет все неиспользуемые элементы из всех кэшей. Ядро СУБД SQL Server заранее автоматически очищает неиспользуемые элементы кэша в фоновом режиме, освобождая память для текущих записей. Но можно использовать эту команду, чтобы вручную удалить неиспользуемые записи из каждого кэша или из указанного кэша пула Resource Governor.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

( 'ALL' [ , pool_name ] )

  • ALL

    Указывает все поддерживаемые кэши.

  • pool_name

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

    SELECT name FROM sys.dm_resource_governor_resource_pools;
    

Большинство, но не все, кэши можно освободить по отдельности с помощью этой команды.

MARK_IN_USE_FOR_REMOVAL

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

NO_INFOMSGS

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

Remarks

При выполнении инструкции DBCC FREESYSTEMCACHE очищается кэш планов для экземпляра SQL Server. Очистка кэша планов становится причиной перекомпиляции всех предстоящих планов выполнения и приводит к непредвиденному временному снижению производительности обработки запросов. Для каждого очищенного хранилища кэша в кэше планов в журнал ошибок SQL Server помещается следующее информационное сообщение:

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.

Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.

Наборы результатов

DBCC FREESYSTEMCACHE возвращает:

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

Разрешения

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

Примеры

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

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

-- 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;

См. также