Поведение кэша полного плана


8

Что происходит в SQL Server 2005, когда кэш плана заполняется? Я провел некоторое исследование, и из собранных кусочков кажется, что кэшированным планам присваивается «возраст», состоящий из его веса или стоимости компиляции, умноженный на количество раз, которое он выполнялся с момента кэширования. С течением времени этот возраст уменьшается до тех пор, пока не достигнет 0, когда он считается «состарившимся» и становится кандидатом на смывание при необходимости. Когда кэш планов заполняется, устаревшие планы удаляются из кеша.

Есть ли что-то еще, что происходит за сценой, чтобы усложнить этот сценарий?

Спасибо,

Matt

Ответы:


9

Лучшая информация для предмета, найденного на MSDN, здесь: Кэширование и повторное использование плана выполнения . Цитата из статьи MSDN:

«Удаление планов выполнения из кэша процедур

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

Когда существует нехватка памяти, компонент Database Engine отвечает, удаляя планы выполнения из кэша процедур. Чтобы определить, какие планы удалить, компонент Database Engine неоднократно проверяет состояние каждого плана выполнения и удаляет планы, когда их текущая стоимость равна нулю. План выполнения с нулевой текущей стоимостью не удаляется автоматически при наличии нагрузки на память; он удаляется только тогда, когда компонент Database Engine проверяет план, а текущая стоимость равна нулю. При проверке плана выполнения компонент Database Engine смещает текущую стоимость к нулю, уменьшая текущую стоимость, если запрос в настоящее время не использует план ».

Лучше прочитать полную статью, она очень хорошо документирована. Посмотрите, что он также имеет некоторые ссылки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.