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

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

10.08.2008 16:46:12
4 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

5
7.10.2008 13:46:25

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

обновить статистику с полной проверкой? перестроили индексы?

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

2
10.08.2008 16:59:30

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

1
10.08.2008 17:01:28

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

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

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

1
6.05.2010 06:44:49