Upgraden von Datenbanken mit dem Abfrageoptimierungs-AssistentenUpgrading Databases by using the Query Tuning Assistant

GILT FÜR: JaSQL Server 2016 und höher JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data WarehouseAPPLIES TO: YesSQL Server 2016 and later YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Wenn Sie von einer älteren SQL ServerSQL Server-Version zu SQL Server 2014 (12.x)SQL Server 2014 (12.x) oder neuer migrieren und ein Upgrade auf den aktuellen Datenbankkompatibilitätsgrad durchführen, kann es bei einer Workload womöglich zu Leistungseinbußen kommen.When migrating from an older version of SQL ServerSQL Server to SQL Server 2014 (12.x)SQL Server 2014 (12.x) or newer, and upgrading the database compatibility level to the latest available, a workload may be exposed to the risk of performance regression. Dies ist in geringerem Ausmaß auch beim Upgrade von SQL Server 2014 (12.x)SQL Server 2014 (12.x) auf eine neuere Version möglich.This is also possible to a lesser degree when upgrading between SQL Server 2014 (12.x)SQL Server 2014 (12.x) and any newer version.

Beginnend mit SQL Server 2014 (12.x)SQL Server 2014 (12.x) und mit jeder neuen Version werden alle Änderungen des Abfrageoptimierers auf den neuesten Datenbank-Kompatibilitätsgrad abgestimmt, sodass Ausführungspläne nicht direkt beim Upgrade geändert werden, sondern wenn ein Benutzer die COMPATIBILITY_LEVEL-Datenbankoption in die neueste verfügbare ändert.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x), and with every new version, all query optimizer changes are gated to the latest database compatibility level, so execution plans are not changed right at point of upgrade but rather when a user changes the COMPATIBILITY_LEVEL database option to the latest available. Weitere Informationen zu den in SQL Server 2014 (12.x)SQL Server 2014 (12.x) eingeführten Änderungen des Abfrageoptimierers finden Sie unter Kardinalitätsschätzung.For more information on query optimizer changes introduced in SQL Server 2014 (12.x)SQL Server 2014 (12.x), see Cardinality Estimator. Weitere Informationen zu Kompatibilitätsgraden und deren Auswirkungen auf Upgrades finden Sie unter Kompatibilitätsgrade und Upgrades der Datenbank-Engine.For more information about compatibility levels and how they can affect upgrades, see Compatibility Levels and Database Engine Upgrades.

Diese Gatingfunktion, die durch den Datenbank-Kompatibilitätsgrad bereitgestellt wird, bietet Ihnen in Kombination mit dem Abfragespeicher große Kontrolle über die Abfrageleistung im Upgradeprozess, wenn das Upgrade dem empfohlenen Workflow folgt, der unten gezeigt wird.This gating capability provided by the database compatibility level, in combination with Query Store gives you a great level of control over the query performance in the upgrade process if the upgrade follows the recommended workflow seen below. Weitere Informationen zum empfohlenen Workflow für das Aktualisieren des Kompatibilitätsgrads finden Sie unter Ändern des Datenbank-Kompatibilitätsmodus und Verwenden des Abfragespeichers.For more information on the recommended workflow for upgrading the compatibility level, see Change the Database Compatibility Mode and Use the Query Store.

Empfohlener Datenbankupgradeworkflow mit dem AbfragespeicherRecommended database upgrade workflow using Query Store

Diese Kontrolle über Upgrades wurde mit SQL Server 2017 (14.x)SQL Server 2017 (14.x) weiter verbessert. In dieser Version wurde Automatische Optimierung eingeführt und die Automatisierung des letzten Schritts im oben empfohlenen Workflow ermöglicht.This control over upgrades was further improved with SQL Server 2017 (14.x)SQL Server 2017 (14.x) where Automatic Tuning was introduced and allows automating the last step in the recommended workflow above.

Beginnend mit SQL Server Management StudioSQL Server Management Studio v18 führt die neue Funktion Abfrageoptimierungs-Assistent (Query Tuning Assistant, QTA) Benutzer durch den empfohlenen Workflow, um die Leistungsstabilität bei Upgrades auf neuere SQL ServerSQL Server-Versionen aufrecht zu erhalten, wie im Abschnitt Aufrechterhalten einer stabilen Leistung während des Upgrades auf eine neuere Version von SQL Server der Szenarien für die Verwendung des Abfragespeichers beschrieben.Starting with SQL Server Management StudioSQL Server Management Studio v18, the new Query Tuning Assistant (QTA) feature will guide users through the recommended workflow to keep performance stability during upgrades to newer SQL ServerSQL Server versions, as documented in the section Keep performance stability during the upgrade to newer SQL Server of Query Store Usage Scenarios. QTA führt allerdings kein Rollback auf einen bekannten funktionierenden Plan aus, wie im letzten Schritt des empfohlenen Workflows zu sehen.However, QTA does not roll back to a previously known good plan as seen in the last step of the recommended workflow. Stattdessen verfolgt QTA alle Regressionen nach, die in der Ansicht Abfragespeicher – Zurückgestellte Abfragen gefunden wurden, und durchläuft mögliche Permutationen von anwendbaren Variationen des Optimierungsmodells, sodass ein neuer, besserer Plan erstellt werden kann.Instead, QTA will track any regressions found in the Query Store Regressed Queries view, and iterate through possible permutations of applicable optimizer model variations so that a new better plan can be produced.

Wichtig

QTA generiert keine Benutzerworkload.QTA does not generate user workload. Wenn Sie QTA in einer Umgebung ausführen, die nicht von Ihren Anwendungen verwendet wird, stellen Sie sicher, dass Sie weiterhin repräsentative Testworkloads auf dem SQL Server-Datenbank-EngineSQL Server Database Engine-Ziel mit anderen Mitteln ausführen können.If running QTA in an environment that is not used by your applications, ensure that you can still execute representative test workload on the targeted SQL Server-Datenbank-EngineSQL Server Database Engine by other means.

Workflow des Abfrageoptimierungs-AssistentenThe Query Tuning Assistant workflow

Als Ausgangspunkt geht QTA davon aus, dass eine Datenbank aus einer früheren Version von SQL ServerSQL Server (über CREATE DATABASE... FOR ATTACH oder RESTORE) in eine neuere Version der SQL Server-Datenbank-EngineSQL Server Database Engine verschoben wird, und der Kompatibilitätsgrad der Datenbank vor dem Upgrade wird nicht sofort geändert.The starting point of QTA assumes that a database from a previous version of SQL ServerSQL Server is moved (through CREATE DATABASE ... FOR ATTACH or RESTORE) to a newer version of the SQL Server-Datenbank-EngineSQL Server Database Engine, and the before-upgrade database compatibility level is not changed immediately. QTA führt Benutzer durch die folgenden Schritte:QTA will guide through the following steps:

  1. Konfigurieren des Abfragespeichers gemäß den empfohlenen Einstellungen für die Workloaddauer (in Tagen), die vom Benutzer festgelegt wird.Configure Query Store according to recommended settings for the workload duration (in days) set by the user. Verwenden Sie eine Workloaddauer, die Ihrem normalen Geschäftszyklus entspricht.Think about the workload duration that matches your typical business cycle.
  2. Anfordern des Starts der erforderlichen Workload, damit der Abfragespeicher eine Baseline für Workloaddaten erfassen kann (wenn noch keine Baseline verfügbar ist).Request to start the required workload, so that Query Store can collect a baseline of workload data (if none available yet).
  3. Upgrade auf den vom Benutzer ausgewählten Zieldatenbank-Kompatibilitätsgrad.Upgrade to the target database compatibility level chosen by the user.
  4. Anfordern eines zweiten Durchgangs der Workloaddatenerfassung für Vergleichs- und Regressionserkennungszwecke.Request that a second pass of workload data is collected for comparison and regression detection.
  5. Iterieren durch alle Regressionen, die auf Grundlage der Ansicht AbfragespeicherZurückgestellte Abfragen gefunden wurden, Experimentieren durch Erfassen von Laufzeitstatistiken für mögliche Permutationen anwendbarer Optimierungsmodellvariationen und Messen des Ergebnisses.Iterate through any regressions found based on Query Store Regressed Queries view, experiment by collecting runtime statistics on possible permutations of applicable optimizer model variations, and measure the outcome.
  6. Melden der gemessenen Optimierungen und optional Zulassen, dass diese Änderungen mit Planhinweislisten persistent gespeichert werden.Report on the measured improvements, and optionally allow those changes to be persisted using plan guides.

Weitere Informationen zum Anfügen einer Datenbank finden Sie unter Anfügen und Trennen einer Datenbank.For more information on attaching a database, see Database Detach and Attach.

Im Folgenden erfahren Sie, wie QTA im Wesentlichen nur die letzten Schritte des empfohlenen Workflows zur Aktualisierung des Kompatibilitätsgrads mithilfe des Abfragespeichers wie oben beschrieben ändert.See below how QTA essentially only changes the last steps of the recommended workflow for upgrading the compatibility level using Query Store seen above. QTA bietet nicht nur die Möglichkeit, zwischen dem zurzeit ineffizienten Ausführungsplan und dem letzten bekannten funktionierenden Ausführungsplan zu wählen, sondern auch Optimierungsoptionen speziell für die ausgewählten zurückgestellten Abfragen, um einen neuen verbesserten Zustand mit optimierten Ausführungsplänen zu erstellen.Instead of having the option to choose between the currently inefficient execution plan and the last known good execution plan, QTA presents tuning options that are specific for the selected regressed queries, to create a new improved state with tuned execution plans.

Empfohlener Datenbankupgradeworkflow mit dem Abfrageoptimierungs-AssistentenRecommended database upgrade workflow using QTA

Optimieren des internen Suchbereichs durch QTAQTA Tuning internal search space

QTA bezieht sich nur auf SELECT-Abfragen, die aus dem Abfragespeicher ausgeführt werden können.QTA targets only SELECT queries that can be executed from Query Store. Parametrisierte Abfragen sind zulässig, wenn der kompilierte Parameter bekannt ist.Parameterized queries are eligible if the compiled parameter is known. Abfragen, die von Laufzeitkonstrukten wie temporären Tabellen oder Tabellenvariablen abhängen, sind zurzeit nicht zulässig.Queries that depend on runtime constructs such as temporary tables or table variables are not eligible at this time.

QTA zielt auf bekannte mögliche Muster von Anfrageregressionen aufgrund von Änderungen in Kardinalitätsschätzungsversionen (Cardinality Estimator, CE).QTA targets known possible patterns of query regressions due to changes in Cardinality Estimator (CE) versions. Wenn Sie beispielsweise eine Datenbank aus SQL Server 2012 (11.x)SQL Server 2012 (11.x) mit dem Datenbank-Kompatibilitätsgrad 110 in SQL Server 2017 (14.x)SQL Server 2017 (14.x) mit dem Datenbank-Kompatibilitätsgrad 140 aktualisieren, können einige Abfragen Regression zeigen, da sie speziell für die Zusammenarbeit mit der CE-Version entworfen wurden, die in SQL Server 2012 (11.x)SQL Server 2012 (11.x) vorhanden war (CE 70).For example, when upgrading a database from SQL Server 2012 (11.x)SQL Server 2012 (11.x) and database compatibility level 110, to SQL Server 2017 (14.x)SQL Server 2017 (14.x) and database compatibility level 140, some queries may regress because they were designed specifically to work with the CE version that existed in SQL Server 2012 (11.x)SQL Server 2012 (11.x) (CE 70). Dies bedeutet nicht, dass das Zurücksetzen von CE 140 auf CE 70 die einzige Option ist.This does not mean that reverting from CE 140 to CE 70 is the only option. Wenn nur eine bestimmte Änderung in der neueren Version zur Regression führt, dann ist es möglich, diese Abfrage mit einem Hinweis zu versehen, dass sie nur den relevanten Teil der vorherigen CE-Version verwendet, der für die spezifische Abfrage besser funktioniert hat, während sie gleichzeitig alle anderen Optimierungen der neueren CE-Versionen nutzt.If only a specific change in the newer version is introducing the regression, then it is possible to hint that query to use just the relevant part of the previous CE version that was working better for the specific query, while still leveraging all other improvements of newer CE versions. Und auch andere Abfragen in der Workload, die keine Regression gezeigt haben, können von neueren CE-Optimierungen profitieren.And also allow other queries in the workload that have not regressed to benefit from newer CE improvements.

Die folgenden CE-Muster werden von QTA gesucht:The CE patterns searched by QTA are the following:

  • Unabhängigkeit im Vergleich zu Korrelation: Wenn die Unabhängigkeitsannahme bessere Schätzungen für die spezifische Abfrage liefert, bewirkt der Abfragehinweis USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES'), dass SQL ServerSQL Server einen Ausführungsplan generiert, indem minimale Selektivität verwendet wird, wenn AND-Prädikate für Filter geschätzt werden, um die Korrelation zu berücksichtigen.Independence vs. Correlation: If independence assumption provides better estimations for the specific query, then the query hint USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES') causes SQL ServerSQL Server to generate an execution plan by using minimum selectivity when estimating AND predicates for filters to account for correlation. Weitere Informationen finden Sie unter USE HINT-Abfragehinweise und Versionen der Kardinalitätsschätzung.For more information, see USE HINT query hints and Versions of the CE.
  • Einfacher Einschluss im Vergleich zu Basiseinschluss: Wenn ein anderer Joineinschluss bessere Schätzungen für die spezifische Abfrage liefert, bewirkt der Abfragehinweis USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS'), dass SQL ServerSQL Server einen Ausführungsplan generiert, indem die Annahme eines einfachen Einschlusses anstelle der Standardannahme eines Basiseinschlusses verwendet wird.Simple Containment vs. Base Containment: If a different join containment provides better estimations for the specific query, then the query hint USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS') causes SQL ServerSQL Server to generate an execution plan by using the Simple Containment assumption instead of the default Base Containment assumption. Weitere Informationen finden Sie unter USE HINT-Abfragehinweise und Versionen der Kardinalitätsschätzung.For more information, see USE HINT query hints and Versions of the CE.
  • Feste Kardinalitätsschätzung der Tabellenwertfunktion mit mehreren Anweisungen (Multi-Statement Table-Valued Function, MSTVF) von 100 Zeilen im Vergleich zu einer Zeile: Wenn die feste Standardschätzung für die Tabellenwertfunktion von 100 Zeilen nicht zu einem effizienteren Plan führt als die Verwendung der festen Schätzung einer Zeile (entsprechend dem Standard unter dem CE-Abfrageoptimierermodell von SQL Server 2008 R2SQL Server 2008 R2 und früheren Versionen), wird der Abfragehinweis QUERYTRACEON 9488 verwendet, um einen Ausführungsplan zu erstellen.Multi-statement table-valued function (MSTVF) fixed cardinality guess of 100 rows vs. 1 row: If the default fixed estimation for TVFs of 100 rows does not result in a more efficient plan than using the fixed estimation for TVFs of 1 row (corresponding to the default under the query optimizer CE model of SQL Server 2008 R2SQL Server 2008 R2 and earlier versions), then the query hint QUERYTRACEON 9488 is used to generate an execution plan. Weitere Informationen zu MSTVFs finden Sie unter Erstellen benutzerdefinierter Funktionen (Datenbank-Engine).For more information on MSTVFs, see Create User-defined Functions (Database Engine).

Hinweis

Als letztes Mittel (wenn die Hinweise mit engem Bereich nicht ausreichend gute Ergebnisse für die zulässigen Abfragemuster liefern) wird auch die vollständige Verwendung von CE 70 in Betracht gezogen, indem der Abfragehinweis USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION') verwendet wird, um einen Ausführungsplan zu erstellen.As a last resort, if the narrow scoped hints are not yielding good enough results for the eligible query patterns, then full use of CE 70 is also considered, by using the query hint USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION') to generate an execution plan.

Wichtig

Alle Hinweise erzwingen bestimmte Verhaltensweisen, die in zukünftigen Updates von SQL ServerSQL Server ggf. behoben werden.Any hint forces certain behaviors that may be addressed in future SQL ServerSQL Server updates. Es wird empfohlen, Hinweise nur dann anzuwenden, wenn keine andere Option besteht, und bei jedem neuen Upgrade den mit Hinweisen versehenen Code erneut zu überprüfen.We recommend you only apply hints when no other option exists, and plan to revisit hinted code with every new upgrade. Durch das Erzwingen von Verhaltensweisen verhindern Sie möglicherweise, dass Ihre Workload von Optimierungen profitieren kann, die in neueren Versionen von SQL ServerSQL Server eingeführt werden.By forcing behaviors, you may be precluding your workload from benefiting of enhancements introduced in newer versions of SQL ServerSQL Server.

Starten des Abfrageoptimierungs-Assistenten für DatenbankupgradesStarting Query Tuning Assistant for database upgrades

QTA ist eine sitzungsbasierte Funktion, die den Sitzungszustand im msqta-Schema der Benutzerdatenbank speichert, in der zum ersten Mal eine Sitzung erstellt wird.QTA is a session-based feature that stores session state in the msqta schema of the user database where a session is created for the first time. Mehrere Optimierungssitzungen können für eine einzelne Datenbank im Lauf der Zeit erstellt werden, aber nur eine aktive Sitzung kann für eine bestimmte Datenbank vorhanden sein.Multiple tuning sessions can be created on a single database over time, but only one active session can exist for any given database.

Erstellen einer DatenbankupgradesitzungCreating a database upgrade session

  1. Öffnen Sie in SQL Server Management StudioSQL Server Management Studio den Objekt-Explorer, und stellen Sie eine Verbindung mit Datenbank-EngineDatabase Engine her.In SQL Server Management StudioSQL Server Management Studio open the Object Explorer and connect to Datenbank-EngineDatabase Engine.

  2. Klicken Sie für die Datenbank, für die ein Upgrade des Datenbank-Kompatibilitätsgrads vorgesehen ist, mit der rechten Maustaste auf den Datenbanknamen, wählen Sie Aufgaben aus, wählen Sie Datenbankupgrade aus, und klicken Sie dann auf Neue Datenbankupgradesitzung.For the database that is intended to upgrade the database compatibility level, right-click the database name, select Tasks, select Database Upgrade, and click on New Database Upgrade Session.

  3. Im Fenster des QTA-Assistenten sind zwei Schritte erforderlich, um eine Sitzung zu konfigurieren:In the QTA Wizard window, two steps are required to configure a session:

    1. Konfigurieren Sie im Fenster Setup den Abfragespeicher so, dass er das Äquivalent eines vollständigen Geschäftszyklus von Workloaddaten erfasst, die analysiert und optimiert werden sollen.In the Setup window, configure Query Store to capture the equivalent of one full business cycle of workload data to analyze and tune.
      • Geben Sie die erwartete Workloaddauer in Tagen ein (der Mindestwert ist 1 Tag).Enter the expected workload duration in days (minimum is 1 day). Diese Angabe wird verwendet, um empfohlene Abfragespeichereinstellungen vorzuschlagen, um vorläufig die gesamte Baseline zu erfassen.This will be used to propose recommended Query Store settings to tentatively allow the entire baseline to be collected. Die Erfassung einer guten Baseline ist wichtig, um sicherzustellen, dass alle zurückgestellten Abfragen, die nach einer Änderung des Kompatibilitätsgrads der Datenbank gefunden wurden, analysiert werden können.Capturing a good baseline is important to ensure any regressed queries found after changing the database compatibility level are able to be analyzed.
      • Legen Sie den vorgesehenen Zieldatenbank-Kompatibilitätsgrad fest, den die Benutzerdatenbank verwenden soll, nachdem der QTA-Workflow abgeschlossen wurde.Set the intended target database compatibility level that the user database should be at, after the QTA workflow has completed. Klicken Sie anschließend auf Weiter.Once complete, click Next.

    Fenster zum Einrichten einer neuen DatenbankupgradesitzungNew database upgrade session setup window

    1. Im Fenster Einstellungen zeigen zwei Spalten den Status Aktuell des Abfragespeichers in der Zieldatenbank sowie die empfohlenen Einstellungen an.In the Settings window, two columns show the Current state of Query Store in the targeted database, as well as the Recommended settings.
      • Die empfohlenen Einstellungen sind standardmäßig ausgewählt. Wenn Sie jedoch auf das Optionsfeld über der Spalte „Aktuell“ klicken, werden die aktuellen Einstellungen akzeptiert, und Sie können auch die aktuelle Konfiguration des Abfragespeichers optimieren.The Recommended settings are selected by default, but clicking the radio button over the Current column accepts current settings, and also allows fine-tuning the current Query Store configuration.
      • Die vorgeschlagene Einstellung Schwellenwert für veraltete Abfragen ist zwei Mal so groß wie die erwartete Workloaddauer in Tagen.The proposed Stale Query Threshold setting is twice the number of expected workload duration in days. Dies liegt daran, dass der Abfragespeicher Informationen zur Baselineworkload und zur Workload nach dem Datenbankupgrade speichern muss.This is because Query Store will need to hold information on the baseline workload and the post-database upgrade workload. Klicken Sie anschließend auf Weiter.Once complete, click Next.

    Fenster für Einstellungen eines neuen DatenbankupgradesNew database upgrade settings window

    Wichtig

    Die vorgeschlagene Maximale Größe ist ein beliebiger Wert, der ggf. für eine Workload mit kurzer Ausführungszeit geeignet ist.The proposed Max Size is an arbitrary value that may be suited for a short timed workload.
    Beachten Sie jedoch, dass es unter Umständen nicht ausreicht, Informationen zu den Baseline- und den Workloads nach dem Datenbankupgrade für sehr intensive Workloads zu speichern, insbesondere wenn viele verschiedene Pläne generiert werden können.However, keep in mind that it may be insufficient to hold information on the baseline and post-database upgrade workloads for very intensive workloads, namely when many different plans may be generated.
    Wenn Sie davon ausgehen, dass dies der Fall sein wird, geben Sie einen höheren Wert ein, der angemessen ist.If you antecipate this will be the case, enter a higher value that is appropriate.

  4. Im Fenster Optimierung wird die Sitzungskonfiguration abgeschlossen, und die nächsten Schritte zum Öffnen und Fortsetzen der Sitzung werden eingeleitet.The Tuning window concludes the session configuration, and instructs on next steps to open and proceed with the session. Klicken Sie nach Abschluss des Vorgangs auf Fertig stellen.Once complete, click Finish.

    Fenster zum Optimieren des neuen DatenbankupgradesNew database upgrade tuning window

Hinweis

Ein mögliches alternatives Szenario beginnt damit, dass eine Datenbanksicherung vom Produktionsserver, auf dem eine Datenbank bereits den empfohlenen Workflow für das Upgrade der Datenbankkompatibilität durchlaufen hat, auf einem Testserver wiederhergestellt wird.A possible alternative scenario starts by restoring a database backup from the production server where a database has already gone through the recommended database compatibility upgrade workflow, to a test server.

Ausführen des Workflows für das DatenbankupgradeExecuting the database upgrade workflow

  1. Klicken Sie für die Datenbank, für die ein Upgrade des Datenbank-Kompatibilitätsgrads vorgesehen ist, mit der rechten Maustaste auf den Datenbanknamen, wählen Sie Aufgaben aus, wählen Sie Datenbankupgrade aus, und klicken Sie dann auf Sitzungen überwachen.For the database that is intended to upgrade the database compatibility level, right-click the database name, select Tasks, select Database Upgrade, and click on Monitor Sessions.

  2. Die Seite Sitzungsverwaltung listet die aktuellen und vergangenen Sitzungen für die Datenbank im Bereich auf.The session management page lists current and past sessions for the database in scope. Wählen Sie die gewünschte Sitzung aus, und klicken Sie auf Details.Select the desired session, and click on Details.

    Hinweis

    Wenn die aktuelle Sitzung nicht vorhanden ist, klicken Sie auf die Schaltfläche Aktualisieren.If the current session is not present, click the Refresh button.

    Die Liste enthält die folgenden Informationen:The list contains the following information:

    • Sitzungs-IDSession ID
    • Sitzungsname: Vom System generierter Name, bestehend aus dem Namen der Datenbank sowie Datum und Uhrzeit der Sitzungserstellung.Session Name: System-generated name comprised of the database name, date and time of session creation.
    • Status: Status der Sitzung („Aktiv“ oder „Geschlossen“).Status: Status of the session (Active or Closed).
    • Beschreibung: Vom System generierte Beschreibung, bestehend aus dem vom Benutzer ausgewählten Kompatibilitätsgrad der Zieldatenbank und der Anzahl der Tage für die Geschäftszyklusworkload.Description: System-generated comprised of the user selected target database compatibility level and number of days for business cycle workload.
    • Startzeit: Das Datum und die Uhrzeit der Sitzungserstellung.Time Started: Date and time of when the session was created.

    Seite für Sitzungsverwaltung mit dem Abfrageoptimierungs-AssistentenQTA Session Management page

    Hinweis

    Sitzung löschen löscht alle Daten, die für die ausgewählte Sitzung gespeichert wurden.Delete Session deletes any data stored for the selected session.
    Durch das Löschen einer geschlossenen Sitzung werden zuvor bereitgestellte Planhinweislisten jedoch nicht gelöscht.However, deleting a closed session does not delete any previously deployed plan guides.
    Wenn Sie eine Sitzung löschen, für die Planhinweislisten bereitgestellt wurden, können Sie QTA nicht für ein Rollback verwenden.If you delete a session that had deployed plan guides, then you cannot use QTA to rollback.
    Suchen Sie stattdessen mit der sys.plan_guides-Systemtabelle nach Planhinweislisten, und löschen Sie diese mit sp_control_plan_guide manuell.Instead, search for plan guides using the sys.plan_guides system table, and delete manually using sp_control_plan_guide.

  3. Der Einstiegspunkt für eine neue Sitzung ist der Schritt Datenerfassung.The entry point for a new session is the Data Collection step.

    Hinweis

    Über die Schaltfläche Sitzungen kehren Sie zur Seite Sitzungsverwaltung zurück und behalten die aktive Sitzung in ihrem aktuellen Zustand bei.The Sessions button returns to the session management page, leaving the active session as-is.

    Dieser Schritt hat drei Teilschritte:This step has three substeps:

    1. Baselinedatenerfassung fordert den Benutzer auf, den repräsentativen Workloadzyklus auszuführen, damit der Abfragespeicher eine Baseline erfassen kann.Baseline Data Collection requests the user to run the representative workload cycle, so that Query Store can collect a baseline. Nachdem die Workload abgeschlossen wurde, überprüfen Sie Workloadausführung abgeschlossen, und klicken Sie dann auf Weiter.Once that workload has completed, check the Done with workload run and click Next.

      Hinweis

      Das QTA Fenster kann geschlossen werden, während die Workload ausgeführt wird.The QTA window can be closed while the workload runs. Die Rückkehr zur Sitzung (die im aktiven Zustand verbleibt) zu einem späteren Zeitpunkt wird mit dem gleichen Schritt fortgesetzt, bei dem sie unterbrochen wurde.Returning to the session that remains in active state at a later time will resume from the same step where it was left off.

      Abfrageoptimierungs-Assistent Schritt 2, Teilschritt 1QTA Step 2 Substep 1

    2. Upgrade der Datenbank fordert zur Erteilung der Berechtigung auf, den Kompatibilitätsgrad der Datenbank in den gewünschten Zielwert zu aktualisieren.Upgrade Database will prompt for permission to upgrade the database compatibility level to the desired target. Um mit dem nächsten Teilschritt fortzufahren, klicken Sie auf Ja.To proceed to the next substep, click Yes.

      Abfrageoptimierungs-Assistent Schritt 2, Teilschritt 2: Upgrade des DatenbankkompatibilitätsgradsQTA Step 2 Substep 2 - Upgrade database compatibility level

      Die folgende Seite bestätigt, dass der Datenbank-Kompatibilitätsgrad erfolgreich aktualisiert wurde.The following page confirms that the database compatibility level was successfully upgraded.

      Abfrageoptimierungs-Assistent Schritt 2, Teilschritt 2QTA Step 2 Substep 2

    3. Beobachtete Datenerfassung fordert den Benutzer auf, den repräsentativen Workloadzyklus erneut auszuführen, sodass der Abfragespeicher eine vergleichende Baseline erfassen kann, die für die Suche nach Optimierungsmöglichkeiten verwendet wird.Observed Data Collection requests the user to run the representative workload cycle again, so that Query Store can collect a comparative baseline that will be used to search for optimization opportunities. Verwenden Sie während der Ausführung der Workload die Schaltfläche Aktualisieren, um die Liste der zurückgestellten Abfragen zu aktualisieren, falls solche gefunden wurden.As the workload executes, use the Refresh button to keep updating the list of regressed queries, if any were found. Ändern Sie den Wert für Anzuzeigende Abfragen, um die Anzahl der angezeigten Abfragen zu beschränken.Change the Queries to show value to limit the number of queries displayed. Die Reihenfolge der Liste wird durch die Metrik (Dauer oder CpuTime) und die Aggregation („Mittelwert“ ist Standard) beeinflusst.The order of the list is affected by the Metric (Duration or CpuTime) and the Aggregation (Average is default). Wählen Sie auch aus, wie viele Abfragen angezeigt werden sollen.Also select how many Queries to show. Nachdem die Workload abgeschlossen wurde, überprüfen Sie Workloadausführung abgeschlossen, und klicken Sie dann auf Weiter.Once that workload has completed, check the Done with workload run and click Next.

      Abfrageoptimierungs-Assistent Schritt 2, Teilschritt 3QTA Step 2 Substep 3

      Die Liste enthält die folgenden Informationen:The list contains the following information:

      • Abfrage-IDQuery ID
      • Abfragetext: Eine Transact-SQLTransact-SQL-Anweisung, die durch Klicken auf die Schaltfläche ... erweitert werden kann.Query Text: Transact-SQLTransact-SQL statement that can be expanded by clicking the ... button.
      • Ausführungen: Zeigt die Anzahl der Ausführungen dieser Abfrage für die gesamte Workloadsammlung an.Runs: Displays the number of executions of that query for the entire workload collection.
      • Baselinemetrik: Die ausgewählte Metrik (Dauer oder CpuTime) in Millisekunden für die Baselinedatensammlung vor dem Upgrade des Datenbank-Kompatibilitätsgrads.Baseline Metric: The selected metric (Duration or CpuTime) in ms for the baseline data collection before the database compatibility upgrade.
      • Beobachtete Metrik: Die ausgewählte Metrik (Dauer oder CpuTime) in Millisekunden für die Datensammlung nach dem Upgrade des Datenbank-Kompatibilitätsgrads.Observed Metric: The selected metric (Duration or CpuTime) in ms for the data collection after the database compatibility upgrade.
      • Änderung in %: Prozentuale Änderung für die ausgewählte Metrik zwischen dem Zustand vor und nach dem Upgrade des Datenbank-Kompatibilitätsgrads.% Change: Percent change for the selected metric between the before and after database compatibility upgrade state. Ein negativer Wert stellt die Menge der gemessenen Regression für die Abfrage dar.A negative number represents the amount of measured regression for the query.
      • Optimierbar: TRUE oder FALSE, abhängig davon, ob die Abfrage für Experimente geeignet ist.Tunable: True or False depending on whether the query is eligible for experimentation.
  4. Analyse anzeigen ermöglicht die Auswahl, mit welchen Abfragen experimentiert werden soll, um Optimierungsmöglichkeiten zu ermitteln.View Analysis allows selection of which queries to experiment and find optimization opportunities. Der Wert Anzuzeigende Abfragen wird zum Bereich der geeigneten Abfragen für Experimente.The Queries to show value becomes the scope of eligible queries to experiment on. Nachdem die gewünschten Abfragen aktiviert wurden, klicken Sie auf Weiter, um die Experimente zu starten.Once the desired queries are checked, click Next to start experimentation.

    Hinweis

    Abfragen mit „Optimierbar = FALSE“ können nicht für Experimente ausgewählt werden.Queries with Tunable = False cannot be selected for experimentation.

    Wichtig

    Eine Eingabeaufforderung weist darauf hin, dass die Rückkehr zur Seite „Analyse anzeigen“ nicht möglich ist, sobald QTA in die Experimentierphase übergeht.A prompt advises that once QTA moves to the experimentation phase, returning to the View Analysis page will not be possible.
    Wenn Sie nicht alle geeigneten Abfragen auswählen, bevor Sie zur Experimentierphase übergehen, müssen Sie zu einem späteren Zeitpunkt eine neue Sitzung erstellen und den Workflow wiederholen.If you don't select all eligible queries before moving to the experimentation phase, you need to create a new session at a later time, and repeat the workflow. Dies erfordert das Zurücksetzen des Datenbank-Kompatibilitätsgrads auf den vorherigen Wert.This requires reset of database compatibility level to the previous value.

    Abfrageoptimierungs-Assistent Schritt 3QTA Step 3

  5. Ergebnisse anzeigen ermöglicht die Auswahl, für welche Abfragen die vorgeschlagene Optimierung als Planhinweisliste bereitgestellt werden soll.View Findings allows selection of which queries to deploy the proposed optimization as a plan guide.

    Die Liste enthält die folgenden Informationen:The list contains the following information:

    • Abfrage-IDQuery ID
    • Abfragetext: Eine Transact-SQLTransact-SQL-Anweisung, die durch Klicken auf die Schaltfläche ... erweitert werden kann.Query Text: Transact-SQLTransact-SQL statement that can be expanded by clicking the ... button.
    • Status: Zeigt den aktuellen Experimentierstatus für die Abfrage an.Status: Displays the current experimentation state for the query.
    • Baselinemetrik: Die ausgewählte Metrik (Dauer oder CpuTime) für die Abfrage in Millisekunden, die in Schritt 2.3 ausgeführt wurde. Diese Metrik stellt die zurückgestellte Abfrage nach dem Upgrade des Datenbank-Kompatibilitätsgrads dar.Baseline Metric: The selected metric (Duration or CpuTime) in ms for the query as executed in Step 2 Substep 3, representing the regressed query after the database compatibility upgrade.
    • Beobachtete Metrik: Die ausgewählte Metrik (Dauer oder CpuTime) für die Abfrage nach dem Experimentieren in Millisekunden, für die eine ausreichend gute Optimierung vorgeschlagen wurde.Observed Metric: The selected metric (Duration or CpuTime) in ms for the query after experimentation, for a good enough proposed optimization.
    • Änderung in %: Prozentuale Änderung für die ausgewählte Metrik zwischen dem Zustand vor und nach dem Experimentieren. Sie stellt die Menge der gemessenen Optimierung für die Abfrage mit der vorgeschlagenen Optimierung dar.% Change: Percent change for the selected metric between the before and after experimentation state, representing the amount of measured improvement for the query with the proposed optimization.
    • Abfrageoption: Link zum vorgeschlagenen Hinweis, der die Abfrageausführungsmetrik verbessert.Query Option: Link to the proposed hint that improves query execution metric.
    • Bereitstellung möglich: TRUE oder FALSE, abhängig davon, ob die vorgeschlagene Abfrageoptimierung als Planhinweisliste bereitgestellt werden kann.Can Deploy: True or False depending on whether the proposed query optimization can be deployed as a plan guide.

    Abfrageoptimierungs-Assistent Schritt 4QTA Step 4

  6. Überprüfung zeigt den Bereitstellungsstatus zuvor ausgewählter Abfragen für diese Sitzung an.Verification shows the deployment status of previously selected queries for this session. Die Liste auf dieser Seite unterscheidet sich von der vorherigen Seite durch Ändern der Spalte Kann bereitgestellt werden in Rollback kann ausgeführt werden.The list in this page differs from the previous page by changing the Can Deploy column to Can Rollback. Diese Spalte kann TRUE oder FALSE abhängig davon sein, ob für die bereitgestellte Abfrageoptimierung ein Rollback ausgeführt und ihre Planhinweisliste entfernt werden kann.This column can be True or False depending on whether the deployed query optimization can be rolled back and its plan guide removed.

    Abfrageoptimierungs-Assistent Schritt 5QTA Step 5

    Wenn zu einem späteren Zeitpunkt ein Rollback für eine vorgeschlagene Optimierung erforderlich ist, wählen Sie die entsprechende Abfrage aus, und klicken Sie dann auf Rollback.If at a later date there is a need to roll back on a proposed optimization, then select the relevant query and click Rollback. Diese Abfrageplan-Hinweisliste wird entfernt und die Liste aktualisiert, um die Abfrage zu entfernen, für die ein Rollback ausgeführt wurde.That query plan guide is removed and the list updated to remove the rolled back query. Beachten Sie in der folgenden Abbildung, dass Abfrage 8 entfernt wurde.Note in the picture below that query 8 was removed.

    Abfrageoptimierungs-Assistent Schritt 5: RollbackQTA Step 5 - Rollback

    Hinweis

    Durch das Löschen einer geschlossenen Sitzung werden zuvor bereitgestellte Planhinweislisten nicht gelöscht.Deleting a closed session does not delete any previously deployed plan guides.
    Wenn Sie eine Sitzung löschen, für die Planhinweislisten bereitgestellt wurden, können Sie QTA nicht für ein Rollback verwenden.If you delete a session that had deployed plan guides, then you cannot use QTA to rollback.
    Suchen Sie stattdessen mit der sys.plan_guides-Systemtabelle nach Planhinweislisten, und löschen Sie diese mit sp_control_plan_guide manuell.Instead, search for plan guides using the sys.plan_guides system table, and delete manually using sp_control_plan_guide.

BerechtigungenPermissions

Erfordert Mitgliedschaft in der Rolle db_owner.Requires membership of db_owner role.

Weitere InformationenSee Also

Kompatibilitätsgrade und Upgrades der Datenbank-Engine Compatibility Levels and Database Engine Upgrades
Tools für die Leistungsüberwachung und -optimierung Performance Monitoring and Tuning Tools
Überwachen der Leistung mit dem Abfragespeicher Monitoring Performance By Using the Query Store
Ändern des Datenbank-Kompatibilitätsmodus und Verwenden des Abfragespeichers Change the Database Compatibility Mode and Use the Query Store
Ablaufverfolgungsflags Trace flags
USE HINT-Abfragehinweise USE HINT query hints
Kardinalitätsschätzung Cardinality Estimator
Automatic Tuning (Automatische Optimierung)Automatic Tuning