Freigeben über


Erweiterungen der Skalierbarkeit und Leistungsfähigkeit (Datenbankmodul)

Die Erweiterungen des Database Engine (Datenbankmodul)s in Bezug auf seine Skalierbarkeit und Leistungsfähigkeit umfassen gefilterte Indizes und Statistiken, neue Tabellen- und Abfragehinweise sowie neue Abfrageleistungs- und Abfrageverarbeitungsfeatures.

Gefilterte Indizes und Statistiken

In SQL Server 2008 können Sie ein Prädikat verwenden, um gefilterte Indizes und Statistiken für eine Teilmenge von Zeilen in der Tabelle zu erstellen. In früheren Versionen von SQL Server wurden Indizes und Statistiken für alle Zeilen in der Tabelle erstellt. Gefilterte Indizes und Statistiken sind besonders für Abfragen geeignet, die aus definierten Datenteilmengen auswählen, wie z. B. Spalten, die größtenteils NULL-Werte enthalten, Spalten mit heterogenen Wertekategorien und Spalten mit verschiedenen Wertebereichen.

Mit einem klar definierten gefilterten Index können im Vergleich zu Tabellenindizes die Abfrageleistung verbessert und der Aufwand für die Indexverwaltung und die Indexspeicherung reduziert werden. Weitere Informationen finden Sie unter Richtlinien für den Entwurf gefilterter Indizes. Gefilterte Statistiken können die Qualität des Abfrageplans erhöhen, da sie nur die Zeilen im gefilterten Index umfassen. Das Database Engine (Datenbankmodul) erstellt und verwaltet automatisch gefilterte Statistiken für gefilterte Indizes. Sie können auch gefilterte Statistiken für eine nicht indizierte Spalte erstellen, um die Qualität des Abfrageplans für Datenteilmengen zu verbessern, die keinen gefilterten Index benötigen. Weitere Informationen finden Sie unter Verwenden von Statistiken zum Verbessern der Abfrageleistung.

Tabellen- und Abfragehinweise

OPTIMIZE FOR-Abfragehinweisoption beinhaltet UNKNOWN-Variablenwert

Die OPTIMIZE FOR-Abfragehinweisoption ist durch die UNKNOWN-Syntax erweitert worden, die angibt, dass das Database Engine (Datenbankmodul) statistische Daten anstatt der Anfangswerte zur Bestimmung der Werte für eine oder mehrere lokale Variablen während der Abfrageoptimierung verwendet. Die Syntax kann für alle lokalen Variablen in einer Abfrage oder für eine oder mehrere benannte lokale Variablen angegeben werden. Weitere Informationen finden Sie unter Abfragehinweise (Transact-SQL).

Abfragehinweise

Tabellenhinweise können jetzt als Abfragehinweise angegeben werden, um erweiterte Optimierungsoptionen für die Abfrageleistung bereitzustellen. Es wird empfohlen, einen Tabellenhinweis nur im Kontext einer Planhinweisliste als einen Abfragehinweis zu verwenden. Weitere Informationen finden Sie unter Abfragehinweise (Transact-SQL) und Verwenden der INDEX- und FORCESEEK-Abfragehinweise in Planhinweislisten.

Tabellenhinweise

Der FORCESEEK-Tabellenhinweis wird hinzugefügt, um erweiterte Optimierungsoptionen für die Abfrageleistung bereitzustellen. Der Hinweis gibt an, dass der Abfrageoptimierer nur einen Indexsuchvorgang als Zugriffspfad für die in der Tabelle oder Sicht angegebenen Daten verwenden darf, auf die in der Abfrage verwiesen wird. Weitere Informationen finden Sie unter Verwenden des FORCESEEK-Tabellenhinweises.

Abfrageleistung und -verarbeitung

Sperrenausweitungsoption

Mit einer neuen LOCK_ESCALATION-Option für ALTER TABLE können Sie die Sperrenausweitung für eine Tabelle deaktivieren. Für partitionierte Tabellen können Sie Sperren konfigurieren, die auf die Partitionen angewendet anstatt auf die gesamte Tabelle ausgeweitet werden. Diese Option kann die Parallelität verbessern, indem sie Sperrkonflikte reduziert, wenn partitionierte Tabellen verwendet werden. Weitere Informationen finden Sie unter ALTER TABLE (Transact-SQL).

Optimiertes Bitmapfiltern

Der Abfrageoptimierer kann Bitmapfilter dynamisch in parallele Abfragepläne einfügen, um die Leistung von Abfragen eines Sternschemas zu verbessern. Durch das optimierte Bitmapfiltern kann die Leistung dieser Data Warehouse-Abfragen deutlich gesteigert werden, indem nicht qualifizierende Zeilen zu einem frühen Zeitpunkt im Abfrageplan aus der Faktentabelle entfernt werden. Weitere Informationen finden Sie unter Optimieren der Leistung von Data Warehouse-Abfragen durch das Filtern mithilfe einer Bitmap.

Parallele Abfragebearbeitung für partitionierte Objekte

SQL Server 2008 bietet für viele parallele Pläne eine bessere Verarbeitung von Abfragen in partitionierten Tabellen, eine geänderte Art der Darstellung paralleler und serieller Pläne und bessere Partitionierungsinformationen in Kompilierzeit- und Laufzeitausführungsplänen. SQL Server 2008 automatisiert und verbessert die Threadpartitionierungsstrategie im Falle paralleler Abfrageausführungspläne für partitionierte Objekte. Weitere Informationen finden Sie unter Verbesserte Abfrageverarbeitung bei partitionierten Tabellen und Indizes.

Planhinweislisten

Die gespeicherte Prozedur sp_create_plan_guide wurde erweitert und akzeptiert jetzt XML Showplan-Ausgaben direkt im @hints-Parameter, anstatt die Ausgabe in den USE PLAN-Hinweis einzubetten. Dies vereinfacht den Prozess der Anwendung eines festen Abfrageplans als Hinweis einer Planhinweisliste. Darüber hinaus können Sie mit der neuen gespeicherten Prozedur sp_create_plan_guide_from_handle eine oder mehrere Planhinweislisten aus einem Abfrageplan im Plancache erstellen.

Sie können mehrere OBJECT- oder SQL-Planhinweislisten für dieselbe Abfrage und den Batch oder das Modul erstellen. Es kann jedoch nur jeweils eine dieser Planhinweislisten aktiviert sein.

Die neue Systemfunktion sys.fn_validate_plan_guide kann zur Überprüfung einer Planhinweisliste verwendet werden. Planhinweislisten können ungültig werden, nachdem Änderungen, wie z. B. das Löschen eines Index, am physischen Entwurf der Datenbank vorgenommen wurden. Durch Überprüfen einer Planhinweisliste können Sie feststellen, ob sie ohne Änderungen durch den Abfrageoptimierer verwendet werden kann.

Die neuen Ereignisklassen Plan Guide Successful und Plan Guide Unsuccessful erleichtern die Überprüfung, ob Planhinweislisten vom Abfrageoptimierer verwendet werden. Wenn SQL Server keinen Ausführungsplan für eine Abfrage bereitstellen kann, die eine Planhinweisliste enthält, wird die Abfrage automatisch ohne Verwendung der Planhinweisliste kompiliert. Das Plan Guide Unsuccessful-Ereignis tritt auf, wenn die ursprüngliche Planhinweislistenkompilierung fehlschlägt.

Die neuen Indikatoren Planausführungen mit Planhinweisliste/Sek. und Planausführungen ohne Planhinweisliste/Sek. im SQL Server, SQL-Statistik-Objekt können dazu verwendet werden, die Anzahl der Planausführungen zu überwachen, in denen der Abfrageplan mithilfe einer Planhinweisliste erfolgreich generiert wurde bzw. der Vorgang fehlschlug.

Vorgänge wie das Erstellen, Löschen, Aktivieren oder Deaktivieren von oder die Skripterstellung für Planhinweislisten können mit SQL Server Management Studio ausgeführt werden. Planhinweislisten werden im Objekt-Explorer im Ordner Programmierbarkeit angezeigt.

Hashwerte für das Auffinden und Optimieren ähnlicher Abfragen

Bei der Suche nach ressourcenintensiven Abfragen sollten Sie berücksichtigen, wie Sie ähnliche Abfragen finden und optimieren können, die für sich genommen minimale Systemressourcen beanspruchen, insgesamt jedoch eine große Menge an Systemressourcen belegen. Die sys.dm_exec_query_stats-Katalogsicht und die sys.dm_exec_requests-Katalogsicht stellen Hashwerte für Abfragen und Abfragepläne bereit, anhand derer Sie die Gesamtressourcenverwendung für ähnliche Abfragen und Abfrageausführungspläne ermitteln können. Weitere Informationen finden Sie unter Suchen und Optimieren von ähnlichen Abfragen mit Abfrage und Abfrageplanhashes.

Siehe auch

Konzepte