2008-08-10 19 views
10

Nasze oprogramowanie musi być w stanie działać na SQL Server 2000 i 2005. Aby uprościć rozwój, uruchamiamy nasze bazy danych SQL Server 2005 na poziomie kompatybilności 80. Jednak wydajność bazy danych wydaje się wolniejsza w SQL 2005 niż w SQL 2000 w niektórych przypadkach (nie potwierdziliśmy tego jeszcze za pomocą testów porównawczych). Czy podniesienie poziomu zgodności do 90 poprawi wydajność na serwerach SQL 2005?Czy uruchamianie bazy danych SQL Server 2005 na poziomie zgodności 80 ma negatywny wpływ na wydajność?

Odpowiedz

4

myślę Czytałem gdzieś, że SQL Server 2005 silnik bazy danych powinna wynosić około 30% szybciej niż silnik SQL Server 2000. Możliwe, że musisz uruchomić bazę danych w trybie zgodności 90, aby uzyskać te korzyści.

Ale natknąłem się na dwa scenariusze, w których wydajność może spaść dramatycznie przy użyciu MSSQL 2005 w porównaniu do MSSQL 2000:

  1. Parametr wąchania: W przypadku korzystania z procedury przechowywanej, serwer SQL obliczy dokładnie jeden plan wykonania w czas, najpierw zadzwoń do procedury. Plan wykonania zależy od wartości parametrów podanych dla tego wywołania. W naszym przypadku procedury, które normalnie trwały około 10 sekund, trwały wiele godzin pod adresem mssql 2005. Przyjrzyj się here i here.

  2. Podczas korzystania rozproszonych zapytań mssql 2005 zachowuje się różne dotyczących założeń o porządku sortowania na serwerze zdalnym. Domyślnym zachowaniem jest to, że serwer kopiuje całe zdalne tabele zaangażowane w zapytanie do lokalnego tempdb, a następnie wykonuje lokalnie połączenia. Obejście polega na użyciu OPENQUERY, w którym można dokładnie kontrolować, który zestaw wyników jest przesyłany ze zdalnego serwera.

2

po przeniósł DBS ponad 2005 skończyłeś

aktualizowania statystyk z pełnego skanowania? przebudował indeksy?

najpierw spróbować, a następnie sprawdzić wydajność ponownie

1

Również FYI, jeśli uruchomić poziom zgodności 90 następnie niektóre rzeczy nie są już wspierane jak starym stylu sprzężenia zewnętrzne (*= and =*)

1

Używasz podselekcji w twoje pytania?

Z mojego doświadczenia wynika, SELECT z obsługę żądań, który działa prawidłowo na SQL Server 2000 może indeksować na SQL Server 2005 (może to być jak 10x wolniej!).

Złóż eksperyment - re-write jedno zapytanie do wyeliminowania podselekcji i zobaczyć, jak jego zmian wydajności.