У нас есть SQL Server 2016 SP1 с максимальным объемом памяти 24 ГБ.
Этот сервер имеет большое количество компиляций, только 10% этих компиляций являются запросами Ad-Hoc. Поэтому вновь скомпилированные планы должны храниться в кэше планов, но размер кэша планов не увеличивается (около 3,72 ГБ).
Я подозреваю, что существует локальная нагрузка на память, которая приводит к удалению планов из кэша. Предел давления в кэше плана составляет 5 ГБ. (75% видимой целевой памяти из 0-4 ГБ + 10% видимой целевой памяти из 4–64 ГБ + 5% видимой целевой памяти> 64 ГБ). Когда хранилище кэша достигает 75% от предела давления, планы должны быть удалены из кэша. В моем случае 75% из 5 ГБ это 3,75 ГБ. Так что вполне вероятно, что это причина высоких сборок.
Есть ли способ измерить (perfmon, расширенные события, ...) удаление из планов из кэша? Так что я могу быть уверен, что локальная нагрузка на память - причина высоких компиляций?
источник