Отключить кэширование Sql 2008?
-
05-09-2019 - |
Вопрос
У меня есть приложение, которое выполняет разные запросы с разными результатами, поэтому кэширование в моем случае вредно.
Это означает, что нет общих данных, которые sql мог бы использовать для извлечения результата непосредственно из памяти вместо доступа к жесткому диску.
Решение
Из ваших комментариев звучит так, будто вы не хотите, чтобы SQL использовал много памяти, поскольку считаете, что это бессмысленно, поскольку любые выполняемые вами запросы фактически случайны.
Во-первых, эта память, вероятно, используется для хранения индексов и планов запросов, а не фактических данных, которые вы хотите вернуть, поэтому вы, вероятно, обнаружите, что этот кэш намного полезнее, чем вы думаете.
Во-вторых, крайне маловероятно, что sql, использующий такой объем памяти, приведет к снижению производительности при выполнении действительно случайного невидимого запроса.Если SQL Server необходимо обратиться к диску, чтобы получить какую-либо информацию, то объем используемой им памяти едва ли имеет значение.
Однако можно уменьшить объем памяти, используемый SQL Server.(Я не знаю, где этот параметр в SQL 2008, но я предполагаю, что он довольно похож) В Management Studio щелкните правой кнопкой мыши на сервере и выберите Свойства.Под ним у вас будет страница для запоминания.Здесь вы можете выбрать Минимальное и максимальное значения, которые будет использовать SQL.Это эффективно ограничит любое кэширование, выполняемое sql, на основе ваших значений, а не ограничений физических серверов.
Однако я действительно не думаю, что вы увидите какой-либо прирост производительности.По моему опыту, SQL всегда лучше оставить делать свое дело.
Другие советы
Ваш вопрос неверен:кэширование означает, что данные находятся в памяти и позволяет избежать доступа к диску.
В любом случае кэширование SQL Server не является вредным.Для педантов всегда есть исключения, но вы должны были бы серьезно испортить код и конфигурацию, прежде чем это произошло.
Отключение (или попытка отключить) кэширования SQL Server означает совершенно неправильное отношение к проблеме.Если данные кэшированы на вашем уровне data layer, вам следует обновить их там.SQL Server никогда не будет обслуживать устаревшие данные.