2008-08-10 7 views
10

Unsere Software muss auf SQL Server 2000 und 2005 ausgeführt werden können. Um die Entwicklung zu vereinfachen, führen wir unsere SQL Server 2005-Datenbanken in Kompatibilitätsstufe 80 aus. Die Datenbankleistung scheint in SQL 2005 jedoch langsamer als in SQL 2000 zu sein (Wir haben dies noch nicht durch Benchmarks bestätigt). Würde ein Upgrade der Kompatibilitätsstufe auf 90 die Leistung auf den SQL 2005-Servern verbessern?Hat das Ausführen einer SQL Server 2005-Datenbank mit Kompatibilitätsgrad 80 einen negativen Einfluss auf die Leistung?

Antwort

4

Ich denke, ich irgendwo gelesen, dass die SQL Server 2005-Datenbank-Engine etwa 30% schneller als die SQL Server 2000-Engine sein sollte. Es kann sein, dass Sie Ihre Datenbank im Kompatibilitätsmodus 90 ausführen müssen, um diese Vorteile zu erhalten.

Aber ich stolperte über zwei Szenarien, in denen die Leistung drastisch sinken kann, wenn 2005 mit mssql im Vergleich zu MSSQL 2000:

  1. Parameter Sniffing: Bei Verwendung einer gespeicherten Prozedur, wird SQL Server berechnet genau einen Ausführungsplan an In der Zeit rufen Sie zuerst die Prozedur an. Der Ausführungsplan hängt von den für diesen Aufruf angegebenen Parameterwerten ab. In unserem Fall laufen Prozeduren, die normalerweise etwa 10 Sekunden dauern, unter mssql 2005 für Stunden. Schauen Sie sich here und here an.

  2. Bei Verwendung verteilter Abfragen verhält sich mssql 2005 in Bezug auf die Sortierreihenfolge auf dem Remote-Server anders. Das Standardverhalten besteht darin, dass der Server alle entfernten Tabellen, die an einer Abfrage beteiligt sind, an die lokale tempdb kopiert und anschließend die Joins lokal ausführt. Problemumgehung verwenden Sie OPENQUERY, wo Sie genau steuern können, welche Resultset von dem Remote-Server übertragen wird.

2

, nachdem Sie die DBs bewegt bis 2005 über haben Sie

Update die Statistiken mit Scan? die Indizes neu erstellt?

zuerst versuchen, dass und dann überprüfen Leistung wieder

1

Auch ein FYI, wenn Sie Kompatibilitätsgrad laufen 90 dann einige Dinge sind nicht mehr wie im alten Stil Outer-Joins (*= and =*) unterstützt

1

Verwenden Sie Subselects in Ihre Fragen?

Aus meiner Erfahrung kann eine SELECT-Anweisung mit Subselects, die auf SQL Server 2000 einwandfrei ausgeführt wird, auf SQL Server 2005 crawlen (es kann wie 10 mal langsamer sein!).

Machen Sie ein Experiment - schreiben Sie eine Abfrage neu, um die Subselects zu eliminieren und sehen Sie, wie sich die Leistung ändert.