Запрет кеширования в SQL Server - PullRequest
13 голосов
/ 13 июля 2011

Осмотрев сеть с помощью дяди Google, я не могу найти ответ на этот вопрос:

Каков наилучший способ контроля производительности и быстродействия рабочих серверов, работающих под управлением IIS и MS SQL Server 2005?

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

Я не могу очистить кэш, буферы и т. Д., Так как это отрицательно повлияет на рабочий сервер.Я попытался использовать случайное сгенерированное число в операторе SELECT для генерации уникальных запросов, но кэшированный запрос все еще используется.

Есть ли способ имитировать NO_CACHE в MySQL?

С уважением

Ответы [ 2 ]

21 голосов
/ 15 июля 2011

Чтобы очистить буфер SQL и запланировать кэш:

DBCC DROPCLEANBUFFERS
GO
DBCC FREEPROCCACHE
GO

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

Используйте DBCC FREEPROCCACHE, чтобы тщательно очистить кэш плана. Освобождение кэша плана приводит, например, к перекомпиляции хранимой процедуры вместо ее повторного использования из кэша. ( источник * +1010 *)

3 голосов
/ 15 июля 2011

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

В моей компании мы проверяем доступность и производительность отдельно.Я бы посоветовал вам использовать этот запрос только для того, чтобы убедиться, что ваша система работает вместе от внешнего интерфейса до базы данных, а затем написать другие тесты, которые проверяют отдельные компоненты для оценки производительности.SQL Server предлагает множество способов проверить наличие узких мест и их местонахождение.Я широко использую PerfMon и DMV.Используя PerfMon, я проверяю продолжительность жизни процессора и страницы, а также вижу, какова длина моей дисковой очереди.Используя DMV, я могу узнать, занимают ли мои запросы слишком много времени (sys.dm_exec_query_stats) или длительное время ожидания (sys.dm_os_wait_stats).

Два самых больших узких места в IIS - это процессор и память,и IIS поставляется с собственным набором объектов PerfMon для запросов, но я не настолько знаком с ними.

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