Способ заставить SQL Server кэшировать только определенные типы запросов adhoc - PullRequest
1 голос
/ 18 ноября 2008

Есть ли способ заставить SQL Server не кэшировать определенные типы планов? Например, если у вас есть большое количество запросов пользователей, поступающих из SQL Server Management Studio, есть ли способ указать, что они не будут кэшироваться в кэше плана, таким образом занимая память и другие ресурсы? Существуют ли другие поведенческие настройки, которые можно предпринять, чтобы запретить специальным запросам занимать ресурсы на рабочем сервере?

Ответы [ 3 ]

1 голос
/ 01 мая 2010

Вы можете повлиять на то, как SQL-сервер обрабатывает запросы adhoc и кэширование планов, установив параметр «Оптимизировать для рабочих нагрузок adhoc» согласно http://msdn.microsoft.com/en-us/library/cc645587.aspx

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

Мы установили это на одном из наших производственных серверов и сразу высвободили 2 ГБ ОЗУ, что говорит о текущей рабочей нагрузке на этот сервер больше, чем что-либо (и не очень хорошо)

1 голос
/ 18 ноября 2008

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

  1. получение реплицированного автономного сервера, к которому пользователи могут обращаться с помощью своих специальных запросов; или
  2. ограничение взаимодействия пользователя с БД набором заданных хранимых процедур

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

(Извините, я не ответил на вопрос, который вы на самом деле задали; надеюсь, кто-то более знающий, чем я, сделает это.)

0 голосов
/ 18 ноября 2008

Я думаю, что нет необходимости беспокоиться об этом, но вы можете начать здесь и обсуждение , связанное там

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...