Trace Flag 2453
Nicht von mir getestet, aber als Neuerung in SQL Server 2012 SP2 sicher eine Erwähnung wert: Trace Flag 2453.
Hier kommt der Text aus der Erläuterung zum SP2 (genau genommen KB 2952444), welchen ich mal übersetzt habe. Interessanterweise hatte die maschinelle Übersetzung weniger Infos, als das englische Original. Ein Grund mehr, einen Blick in das Original zu werfen.
Wenn ein Join von einer Tabellenvariablen mit anderen Tabellen im SQL Server durchgeführt wird, kann dies aufgrund von ineffizienten Abfrageplänen zu einer schlechten Performance führen, weil SQL Server keine Statistiken oder die Anzahl von Zeilen in einer Tabellenvariablen zur Erstellung eines Abfrageplans verwendet.
In SQL Server 2012 SP2 wurde ein neues Trace Flag eingeführt, welches dem Query Optimizer erlaubt, die Information über die Anzahl von Zeilen, welche in eine Tabellenvariable eingefügt wurden, für die Erstellung eines effizienteren Abfrageplans zu verwenden. Setze hierzu das Trace Flag 2453 um dieses Verhalten zu aktivieren.
Anmerkungen:
In einigen Szenarios kann das Setzen von Trace Flag 2453 zu schlechterer Performance führen, da zusätzlicher Aufwand für die Kompilierung während der Ausführungszeit benötigt wird, um die aktuelle Anzahl von Zeilen, die in eine Tabellenvariable eingefügt wurden zu berücksichtigen. Typischerweise würden Sie von diesem Trace Flag profitieren, wenn eine Tabellenvariable eine signifikante Menge von Zeilen hat, die mit anderen Tabellen gejoined wird, oder sie hat mehr als eine Zeile und wird auf der äußeren Seite eines Nested Loop Join Operators verwendet, während auf der inneren Seite eine große Anzahl von Zeilen verarbeitet wird.
Ein ähnliches Verhalten kann in anderen Versionen von SQL Server durch die Verwendung der OPTION (RECOMPILE) als Query Hint erreicht werden. Allerdings müssen für den Query Hint alle Abfragen gefunden und modifiziert werden, die unter einem schlechten Abfrageplan leiden, weil über Tabellenvariablen ein großer Teil der Arbeit erledigt wird. Das Setzen von Trace Flag 2453 kann den gesamten existierenden Workload beeinflussen.
Von Torsten Schüßler gibt es eine schöne Anleitung zum Setzen der Trace Flags, so dass hier auf eine detaillierte Beschreibung verzichte.
Print article | This entry was posted by cmu on 15.08.14 at 09:15:00 . Follow any responses to this post through RSS 2.0. |