Что вызывает удаление кэша в SqlServer 2000 - PullRequest
0 голосов
/ 27 февраля 2009

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

Следуя советам с этого сайта: http://www.sql -server-performance.com / статьи / в / optimizing_sp_recompiles_p1.aspx Я использовал профилировщик, чтобы увидеть, что происходит, и, к моему удивлению, для новой версии есть много «Cache Remove», но для текущей версии их нет!

Может кто-нибудь сказать мне, что вызывает сброс кэша?

У меня есть все определения временных таблиц и создание индексов заранее (хотя в учебнике сказано, что построение признаков после INSERT обычно лучше, я экспериментировал с этим подходом и обнаружил, что sproc действительно работает медленнее); и я не вносил никаких изменений схемы ни в какие ссылочные объекты.

Спасибо

Ответы [ 3 ]

2 голосов
/ 27 февраля 2009

Простой список:

  1. Статистические изменения
  2. DBCC FREEPROCCACHE
  3. Использование / давление памяти и т. Д.

Обязательно читать статьи:

  1. Проблемы пакетной компиляции, перекомпиляции и планирования кэширования в SQL Server 2005
  2. Блог группы по программированию SQL и API *

Вероятно, нужна дополнительная информация, хотя как комментарий выше ...

0 голосов
/ 27 февраля 2009

Охватывает ли транзакция только то, что должно быть атомарным? Нужна ли вообще транзакция? Например, если обновление:

вставить в таблицу (v1, v2, v3) выбрать некоторые значения из других таблиц

Это атомное по умолчанию.

0 голосов
/ 27 февраля 2009

Я просто провел еще один эксперимент с этим и обнаружил, что наличие BEGIN и COMMIT TRANSACTION в блоке кода на самом деле превосходит удаление кэша, хотя это, вероятно, нежелательно, если он будет долго удерживать таблицу с высокой загрузкой время: - \ Есть ли способ обойти это, не заключая блок кода в транзакцию?

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