Hat die Ausführung einer SQL Server 2005-Datenbank im Kompatibilitätsgrad 80 negative Auswirkungen auf die Leistung?

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

  •  08-06-2019
  •  | 
  •  

Frage

Unsere Software muss auf SQL Server 2000 und 2005 lauffähig sein.Um die Entwicklung zu vereinfachen, führen wir unsere SQL Server 2005-Datenbanken im Kompatibilitätsgrad 80 aus.Allerdings scheint die Datenbankleistung unter SQL 2005 in einigen Fällen langsamer zu sein als unter SQL 2000 (wir haben dies noch nicht anhand von Benchmarks bestätigt).Würde ein Upgrade des Kompatibilitätsgrads auf 90 die Leistung auf den SQL 2005-Servern verbessern?

War es hilfreich?

Lösung

Ich glaube, ich habe irgendwo gelesen, dass die SQL Server 2005-Datenbank-Engine etwa 30 % schneller sein sollte als die SQL Server 2000-Engine.Möglicherweise müssen Sie Ihre Datenbank im Kompatibilitätsmodus 90 ausführen, um diese Vorteile nutzen zu können.

Aber ich bin auf zwei Szenarien gestoßen, in denen die Leistung bei Verwendung von MSSQL 2005 im Vergleich zu MSSQL 2000 dramatisch sinken kann:

  1. Parameter-Sniffing:Wenn Sie eine gespeicherte Prozedur verwenden, berechnet der SQL Server jeweils genau einen Ausführungsplan, wenn Sie die Prozedur zuerst aufrufen.Der Ausführungsplan hängt von den für diesen Aufruf angegebenen Parameterwerten ab.In unserem Fall laufen Vorgänge, die normalerweise etwa 10 Sekunden dauerten, unter MSSQL 2005 stundenlang.Schau mal Hier Und Hier.

  2. Bei der Verwendung verteilter Abfragen verhält sich MSSQL 2005 hinsichtlich der Annahmen zur Sortierreihenfolge auf dem Remote-Server anders.Das Standardverhalten besteht darin, dass der Server alle an einer Abfrage beteiligten Remote-Tabellen in die lokale Tempdb kopiert und die Joins dann lokal ausführt.Um dieses Problem zu lösen, verwenden Sie OPENQUERY, wo Sie genau steuern können, welcher Ergebnissatz vom Remote-Server übertragen wird.

Andere Tipps

Nachdem Sie die DBs auf 2005 verschoben haben, haben Sie das getan?

Statistiken mit vollständigem Scan aktualisieren?die Indizes neu erstellt?

Versuchen Sie es zuerst und überprüfen Sie dann die Leistung erneut

Zu Ihrer Information: Wenn Sie die Kompatibilitätsstufe 90 ausführen, werden einige Dinge nicht mehr unterstützt, z. B. Outer-Joins im alten Stil (*= and =*)

Benutzt du Unterauswahlen in Ihren Fragen?

Meiner Erfahrung nach kann eine SELECT-Anweisung mit Unterauswahlen, die unter SQL Server 2000 gut läuft, unter SQL Server 2005 gecrawlt werden (es kann bis zu 10x langsamer sein!).

Machen Sie ein Experiment: Schreiben Sie eine Abfrage neu, um die Unterauswahlen zu eliminieren, und sehen Sie, wie sich ihre Leistung ändert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top