Exista o baza de date SQL Server 2005 cu nivel de compatibilitate 80 care are un impact negativ asupra performantei?

Software-ul nostru trebuie să fie capabil să ruleze pe SQL Server 2000 și 2005. Pentru a simplifica dezvoltarea, executăm bazele de date SQL Server 2005 în nivelul de compatibilitate 80. Cu toate acestea, performanța bazei de date pare să fie mai lentă pe SQL 2005 decât pe SQL 2000 în unele cazuri nu au confirmat acest lucru utilizând referințe încă). Actualizarea nivelului de compatibilitate la 90 ar îmbunătăți performanța pe serverele SQL 2005?

0
fr hi bn

4 răspunsuri

Utilizați subselecte în interogările dvs.?

Din experiența mea, o instrucțiune SELECT cu subselecte care rulează bine pe SQL Server 2000 se poate accesa cu crawlere pe SQL Server 2005 (poate fi de 10x mai lent!).

Efectuați un experiment - re-scrieți o interogare pentru a elimina subselectele și pentru a vedea cum se schimbă performanța.

0
adăugat

după ce ați mutat DB-urile peste 2005 ați făcut-o

actualizați statisticile cu scanare completă? ați reconstruit indicii?

încercați mai întâi acest lucru și apoi verificați din nou performanța

0
adăugat

Also a FYI, if you run compatibility level 90 then some things are not supported anymore like old style outer joins (*= and =*)

0
adăugat

Cred că am citit undeva că motorul bazei de date SQL Server 2005 ar trebui să fie cu aproximativ 30% mai rapid decât motorul SQL Server 2000. S-ar putea să fie, că trebuie să vă executați baza de date în modul de compatibilitate 90 pentru a obține aceste beneficii.

Dar am dat peste două scenarii, în care performanța poate scădea dramatic atunci când se utilizează mssql 2005 în comparație cu mssql 2000:

  1. Sniffing parametru: Atunci când se utilizează o procedură stocată, serverul sql va calcula exact un singur plan de execuție în acel moment, apelând mai întâi procedura. Planul de execuție depinde de valorile parametrilor specificați pentru acel apel. În cazul nostru, procedurile care durează în mod normal aproximativ 10 secunde rulează ore întregi sub mssql 2005. Aruncați o privire aici și aici .

  2. Atunci când se utilizează interogări distribuite, mssql 2005 se comportă diferit în ceea ce privește ipotezele privind ordinea de sortare de pe serverul de la distanță. Implicit, comportamentul este că serverul copiază întreaga tabelă la distanță implicată într-o interogare către tempdb local și apoi execută conexiunile la nivel local. Soluția este să utilizați OPENQUERY, unde puteți controla exact ce rezultateet este transferat de la serverul de la distanță.

0
adăugat