Оказывает ли запуск базы данных SQL Server 2005 на уровне совместимости 80 негативное влияние на производительность?

StackOverflow https://stackoverflow.com/questions/7237

  •  08-06-2019
  •  | 
  •  

Вопрос

Наше программное обеспечение должно быть способно работать на SQL Server 2000 и 2005.Чтобы упростить разработку, мы запускаем наши базы данных SQL Server 2005 на уровне совместимости 80.Однако в некоторых случаях производительность базы данных в SQL 2005 кажется ниже, чем в SQL 2000 (мы еще не подтвердили это с помощью тестов).Улучшит ли повышение уровня совместимости до 90 производительность серверов SQL 2005?

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

Решение

Кажется, я где-то читал, что ядро базы данных SQL Server 2005 должно быть примерно на 30% быстрее, чем ядро SQL Server 2000.Возможно, вам придется запустить свою базу данных в режиме совместимости 90, чтобы получить эти преимущества.

Но я наткнулся на два сценария, в которых производительность может резко упасть при использовании mssql 2005 по сравнению с mssql 2000:

  1. Обнюхивание параметров:При использовании хранимой процедуры sql server вычисляет ровно один план выполнения в момент, когда вы сначала вызываете процедуру.План выполнения зависит от значений параметров, заданных для этого вызова.В нашем случае процедуры, которые обычно занимали около 10 секунд, выполняются часами в mssql 2005.Взгляните здесь и здесь.

  2. При использовании распределенных запросов mssql 2005 ведет себя по-другому в отношении предположений о порядке сортировки на удаленном сервере.Поведение по умолчанию заключается в том, что сервер копирует все удаленные таблицы, участвующие в запросе, в локальную базу данных tempdb, а затем выполняет объединения локально.Обходным решением является использование OPENQUERY, где вы можете точно контролировать, какой результирующий набор передается с удаленного сервера.

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

после того, как вы перенесли DBs на 2005 год, не так ли

обновить статистику с помощью полного сканирования?перестроил индексы?

сначала попробуйте это, а затем снова проверьте производительность

Также К вашему сведению, если вы используете уровень совместимости 90, то некоторые вещи больше не поддерживаются, например, внешние соединения старого стиля (*= and =*)

Используете ли вы дополнительные варианты в ваших запросах?

Исходя из моего опыта, оператор SELECT с подвыборками, который нормально работает на SQL Server 2000, может выполнять обход на SQL Server 2005 (это может быть примерно в 10 раз медленнее!).

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

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