Низкая производительность SQL после передачи на сервер

У нас был сервер SQL 2005, работающий для запросов XML EXPLICIT довольно счастливо, без проблем с производительностью. Машина (сервер Windows 2003), к сожалению, умерла, поэтому мне пришлось срочно подготовить коробку Windows 2012. Файлы баз данных были присоединены к 2008r2 и "работают". Однако запросы ужасно медленные. 5 секунд на запрос, когда ранее они были в.x раз. Это делает сайты, на которых они работают, непригодными. Я перестроил все индексы и запустил DBCC FREEPROCCACHE на всех машинах, но это не оказало заметного эффекта. На что еще можно посмотреть? Я не могу запустить их на экземпляре SQL 2016 на коробке, потому что некоторые запросы используют соединения не-ANSI *= (я сказал, что это старый!).

1 ответ

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

Когда вы говорите, что присоединяетесь, задумывались ли вы о том, сколько вы вступаете? Если на новом компьютере будет больше данных в базе данных, объединение может быстро стать чрезмерно дорогим. Это можно сделать, сократив необходимые данные, так как меньшая обработка данных означает меньшую нагрузку.

Есть ли что-то, что вы можете предварительно рассчитать перед выполнением запроса или изменить его, чтобы он работал быстрее?

Я предполагаю, что вы делаете SELECT, но если вы ОБНОВЛЯЕТЕ или УДАЛЯЕТЕ данные, индексы также необходимо пересчитать, что занимает много времени (в этом случае отключите индекс, вставьте все необходимые данные и затем пересчитайте индекс)

Вы не упомянули какую-либо обработку XML, но отметили тег for-xml. Если ваше соединение выполняется с данными XML, использование Xquery для получения данных также может повысить производительность.

Другие вопросы по тегам