Вопрос

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

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

Это было полезно?

Решение

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

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

Во-вторых, крайне маловероятно, что sql, использующий такой объем памяти, приведет к снижению производительности при выполнении действительно случайного невидимого запроса.Если SQL Server необходимо обратиться к диску, чтобы получить какую-либо информацию, то объем используемой им памяти едва ли имеет значение.

Однако можно уменьшить объем памяти, используемый SQL Server.(Я не знаю, где этот параметр в SQL 2008, но я предполагаю, что он довольно похож) В Management Studio щелкните правой кнопкой мыши на сервере и выберите Свойства.Под ним у вас будет страница для запоминания.Здесь вы можете выбрать Минимальное и максимальное значения, которые будет использовать SQL.Это эффективно ограничит любое кэширование, выполняемое sql, на основе ваших значений, а не ограничений физических серверов.

Однако я действительно не думаю, что вы увидите какой-либо прирост производительности.По моему опыту, SQL всегда лучше оставить делать свое дело.

Другие советы

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

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

Отключение (или попытка отключить) кэширования SQL Server означает совершенно неправильное отношение к проблеме.Если данные кэшированы на вашем уровне data layer, вам следует обновить их там.SQL Server никогда не будет обслуживать устаревшие данные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top