SQL Server Upgrade 2008 -> Langsame Abfragen zur Kompatibilität von 2016/100 auf 130, neues CE bringt mich um

7

Kürzlich von SQL Server 2008 auf 2016 aktualisiert, seit 4 Monaten im Kompatibilitätsmodus 100 ausgeführt, lief alles gut (schnell). Nach einigem Testen und Ausführen des Migrationsberaters entschied ich mich, den "Schalter" zu betätigen und änderte die Kompatibilitätsstufe auf 130 ...

Dies hat sich nachteilig auf einige Sprocs / Abfragen ausgewirkt, von denen einige, die in Sekundenbruchteilen ausgeführt werden, jetzt Minuten dauern. Auch die CPU ist dadurch hochgefahren.

Diese Abfragen sind gut geschrieben, außerdem erstelle ich jeden Abend Indizes und Statistiken neu.

Verglichene Pläne, die gleich aussehen, mit ein paar Prozentabweichungen, aber immer noch der gleiche Plan! Ich denke, CE bekommt keine guten Zeilenzahlen.

Was auch seltsam ist, manchmal laufen die Abfragen in 130 einwandfrei, daher denke ich, dass alles in Ordnung ist, aber plötzlich wird eine Warnung angezeigt, und die Abfrage wird nur um 2 Zeilen anders ausgeführt. Dann muss ich OPTION (QUERYTRACEON 9481) wieder hinzufügen, um sie zu erhalten wieder schnell.

Gibt es noch andere Dinge, die ich überprüfen / tun kann, um diese Abfragen wieder zu ihrem früheren Glanz zu bringen?

Soll ich alle Pläne für gespeicherte Prozeduren aus dem Cache entfernen?

Davey
quelle
Ist das ultimative Ziel, sie schnell zu haben oder sie schnell mit neuer Kompatibilität zu haben?
Antoine Hernandez
Schnell mit neuer Kompatibilität
Dave
Haben Sie Ihre Statistiken aktualisiert und den Abfrageplan-Cache geleert?
Ali Razeghi
@AliRazeghi Ich habe jede Nacht Update-Statistiken, habe den Abfrage-Cache noch nicht geleert. Glaubst du, es wäre vorteilhaft, wenn du Joes Antwort gelesen hast?
Dave
Es ist nur etwas, was ich mache, wenn ich auf einen neuen Motor aufrüste, aber manchmal haben wir diesen Luxus nicht und es könnte übertrieben sein. Diese Dinge können meiner Erfahrung nach in mehreren Ebenen geschehen, und die Antworten sind hervorragend zu prüfen. Ich habe Probleme mit fehlerhaften Abfrageplänen, die nach dem Upgrade aus Datenstatistiken erstellt wurden, und dachte mir, ich würde Ihnen eine kurze Frage stellen, aber es sieht so aus, als ob Sie oben drauf sind.
Ali Razeghi

Antworten:

11

Microsoft hat eine Upgrade-Strategie zum Ändern des Kompatibilitätsmodus unter SQL Server 2016. Zitieren des verknüpften Artikels:

Der empfohlene Workflow zum Aktualisieren des Abfrageprozessors auf die neueste Version des Codes lautet:

  1. Aktualisieren Sie eine Datenbank auf SQL Server 2016, ohne die Datenbankkompatibilitätsstufe zu ändern (behalten Sie sie auf der vorherigen Stufe bei).

  2. Aktivieren Sie den Abfragespeicher in der Datenbank. Weitere Informationen zum Aktivieren und Verwenden des Abfragespeichers finden Sie unter Überwachen der Leistung mithilfe des Abfragespeichers.

  3. Warten Sie ausreichend, um repräsentative Daten der Arbeitslast zu erfassen.

  4. Ändern Sie die Kompatibilitätsstufe der Datenbank auf 130

  5. Überprüfen Sie mithilfe von SQL Server Management Studio, ob bei bestimmten Abfragen nach der Änderung der Kompatibilitätsstufe Leistungsrückgänge auftreten

  6. Erzwingen Sie in Fällen mit Regressionen den vorherigen Plan im Abfragespeicher.

  7. Wenn Abfragepläne nicht erzwungen werden können oder die Leistung immer noch nicht ausreicht, sollten Sie die Kompatibilitätsstufe auf die vorherige Einstellung zurücksetzen und dann den Microsoft-Kundensupport aktivieren.

Sie könnten eine Version davon für Ihre Situation ausprobieren. Ändern Sie den Kompatibilitätsmodus wieder auf 100, aktivieren Sie den Abfragespeicher, durchlaufen Sie einen vollständigen Geschäftszyklus und erhalten Sie eine gute Basislinie. Ändern Sie dann den Kompatibilitätsmodus und verwenden Sie den Abfragespeicher, um schlecht ausgeführte Abfragen zu analysieren und weitere Maßnahmen zu ergreifen.

Joe Obbish
quelle
2

Möglicherweise verwenden Sie für die neue Instanz eine andere Version des SQL Server-Kardinalitätsschätzers

Dies ist speziell für Benutzer gedacht, die ein Upgrade auf SQL Server 2014 oder höher durchgeführt haben.

Verwenden Sie diesen Befehl, um es schneller zu machen.

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON
GO  
Janandojan
quelle