Automatische OptimierungAutomatic tuning

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

Die automatische Datenbankoptimierung bietet einen Einblick in die potentiellen Abfrageleistungsprobleme, empfiehlt Lösungen und kann identifizierte Probleme automatisch beheben.Automatic tuning is a database feature that provides insight into potential query performance problems, recommend solutions, and automatically fix identified problems.

Durch die automatische SQL Server 2017 (14.x)SQL Server 2017 (14.x) Optimierung in werden Sie benachrichtigt, sobald ein mögliches Leistungsproblem erkannt wird, und Sie können Korrekturmaßnahmen anwenden oder Datenbank-EngineDatabase Engine die automatische Behebung von Leistungsproblemen durchführen lassen.Automatic tuning in SQL Server 2017 (14.x)SQL Server 2017 (14.x) notifies you whenever a potential performance issue is detected, and lets you apply corrective actions, or lets the Datenbank-EngineDatabase Engine automatically fix performance problems. Die automatische Optimierung SQL Server 2017 (14.x)SQL Server 2017 (14.x) in ermöglicht es Ihnen, Leistungsprobleme zu identifizieren und zu beheben, die durch Abfrage Ausführungsplan Auswahl Regressionenverursacht werden.Automatic tuning in SQL Server 2017 (14.x)SQL Server 2017 (14.x) enables you to identify and fix performance issues caused by query execution plan choice regressions. Bei der automatischen Azure SQL-DatenbankAzure SQL Database Optimierung in werden auch erforderliche Indizes erstellt und nicht verwendete Indizes gelöscht.Automatic tuning in Azure SQL-DatenbankAzure SQL Database also creates necessary indexes and drops unused indexes. Weitere Informationen zu Abfrage Ausführungsplänen finden Sie unter Ausführungspläne.For more information on query execution plans, see Execution Plans.

SQL Server-Datenbank-EngineSQL Server Database Engine Überwacht die Abfragen, die für die Datenbank ausgeführt werden, und verbessert die Leistung der Arbeitsauslastung automatisch.The SQL Server-Datenbank-EngineSQL Server Database Engine monitors the queries that are executed on the database and automatically improves performance of the workload. Datenbank-EngineDatabase Engine Verfügt über einen integrierten Intelligence-Mechanismus, mit dem die Leistung Ihrer Abfragen automatisch optimiert und verbessert werden kann, indem die Datenbank dynamisch an ihre Arbeitsauslastung angepasst wird.The Datenbank-EngineDatabase Engine has a built-in intelligence mechanism that can automatically tune and improve performance of your queries by dynamically adapting the database to your workload. Es stehen zwei Features für die automatische Optimierung zur Verfügung:There are two automatic tuning features that are available:

  • Die Automatische Plan Korrektur identifiziert problematische Abfrage Ausführungspläne und korrigiert Leistungsprobleme beim Abfrage Ausführungsplan.Automatic plan correction identifies problematic query execution plans and fixes query execution plan performance problems. Gilt für: SQL ServerSQL Server (ab SQL Server 2017 (14.x)SQL Server 2017 (14.x)) und Azure SQL-DatenbankAzure SQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017 (14.x)SQL Server 2017 (14.x)) and Azure SQL-DatenbankAzure SQL Database
  • Die Automatische Index Verwaltung identifiziert Indizes, die in der Datenbank hinzugefügt werden sollen, und Indizes, die entfernt werden sollen.Automatic index management identifies indexes that should be added in your database, and indexes that should be removed. Gilt für:Azure SQL-DatenbankAzure SQL DatabaseApplies to: Azure SQL-DatenbankAzure SQL Database

Gründe für die automatische OptimierungWhy automatic tuning?

Zu den drei Hauptaufgaben bei der klassischen Datenbankverwaltung gehören die Überwachung der Arbeits Transact-SQLTransact-SQL Auslastung, das Identifizieren kritischer Abfragen, Indizes, die hinzugefügt werden sollen, um die Leistung zu verbessern und die Identifizierung seltener verwendeterThree of the main tasks in classic database administration are monitoring the workload, identifying critical Transact-SQLTransact-SQL queries, indexes that should be added to improve performance, and identifying rarely used. SQL Server-Datenbank-EngineSQL Server Database Engine Bietet detaillierte Einblicke in die Abfragen und Indizes, die Sie überwachen müssen.The SQL Server-Datenbank-EngineSQL Server Database Engine provides detailed insight into the queries and indexes that you need to monitor. Eine kontinuierliche Überwachung der Datenbank ist jedoch eine schwierige und aufwendige Aufgabe, insbesondere bei sehr vielen Datenbanken.However, constantly monitoring a database is a hard and tedious task, especially when dealing with many databases. Die Verwaltung einer großen Anzahl von Datenbanken ist möglicherweise nicht effizient.Managing a huge number of databases might be impossible to do efficiently. Anstatt die Datenbank manuell zu überwachen und zu optimieren, empfiehlt es sich ggf., einige der Überwachungs-und Datenbank-EngineDatabase Engine Optimierungs Aktionen an die Funktion zur automatischen Optimierung zu delegieren.Instead of monitoring and tuning your database manually, you might consider delegating some of the monitoring and tuning actions to the Datenbank-EngineDatabase Engine using automatic tuning feature.

Wie funktioniert die automatische Optimierung?How does automatic tuning work?

Die automatische Optimierung ist ein kontinuierlicher Überwachungs-und Analyseprozess, der ständig die Merkmale Ihrer Arbeitsauslastung erfährt und potenzielle Probleme und Verbesserungen identifiziert.Automatic tuning is a continuous monitoring and analysis process that constantly learns about the characteristics of your workload and identify potential issues and improvements.

Automatischer Optimierungsprozess

Durch diesen Prozess kann die Datenbank dynamisch an ihre Arbeitsauslastung angepasst werden, indem ermittelt wird, welche Indizes und Pläne die Leistung Ihrer Workloads verbessern können und welche Indizes ihre Workloads beeinflussen.This process enables database to dynamically adapt to your workload by finding what indexes and plans might improve performance of your workloads and what indexes affect your workloads. Basierend auf diesen ermittelten Informationen werden bei der automatischen Optimierung Optimierungsaktionen angewendet, um die Leistung Ihrer Workload zu verbessern.Based on these findings, automatic tuning applies tuning actions that improve performance of your workload. Außerdem überwacht die Datenbank kontinuierlich die Leistung nach jeder durch die automatische Optimierung vorgenommenen Änderung, um sicherzustellen, dass Sie die Leistung Ihrer Arbeitsauslastung verbessert.In addition, database continuously monitors performance after any change made by automatic tuning to ensure that it improves performance of your workload. Jede Aktion, die die Leistung nicht verbessert hat, wird automatisch rückgängig gemacht.Any action that didn't improve performance is automatically reverted. Diese Überprüfung ist ein wichtiges Feature, mit dem dafür gesorgt wird, dass Änderungen, die von der automatischen Optimierung vorgenommen werden, für Ihre Workload keine Leistungsverschlechterung bewirken.This verification process is a key feature that ensures that any change made by automatic tuning does not decrease the performance of your workload.

Automatische Plan KorrekturAutomatic plan correction

Die automatische Plan Korrektur ist eine Funktion zur automatischen Optimierung, die die Auswahl der Ausführungspläne identifiziert und das Problem automatisch durch Erzwingen des letzten bekannten guten Plans korrigiert.Automatic plan correction is an automatic tuning feature that identifies execution plans choice regression and automatically fix the issue by forcing the last known good plan. Weitere Informationen zu Abfrage Ausführungsplänen und zum Abfrageoptimierer finden Sie im Handbuch zur Architektur der Abfrage Verarbeitung.For more information about query execution plans and the query optimizer, see the Query Processing Architecture Guide.

Was ist eine Regression der Ausführungsplan Auswahl?What is execution plan choice regression?

Der SQL Server-Datenbank-EngineSQL Server Database Engine kann verschiedene Ausführungspläne zum Ausführen der Transact-SQLTransact-SQL Abfragen verwenden.The SQL Server-Datenbank-EngineSQL Server Database Engine may use different execution plans to execute the Transact-SQLTransact-SQL queries. Abfrage Pläne sind abhängig von den Statistiken, Indizes und anderen Faktoren.Query plans depend on the statistics, indexes, and other factors. Der optimale Plan, der zum Ausführen einer Transact-SQLTransact-SQL Abfrage verwendet werden sollte, kann im Laufe der Zeit geändert werden.The optimal plan that should be used to execute some Transact-SQLTransact-SQL query might be changed over time. In einigen Fällen ist der neue Plan möglicherweise nicht besser als der vorherige Plan, und der neue Plan kann zu einer Leistungs Regression führen.In some cases, the new plan might not be better than the previous one, and the new plan might cause a performance regression.

Regression der Abfrage Ausführungsplan AuswahlQuery execution plan choice regression

Wenn Sie die Regression der Plan Auswahl bemerken, sollten Sie einen vorherigen guten Plan finden und ihn anstelle des aktuellen Verfahrens mit sp_query_store_force_plan der Prozedur erzwingen.Whenever you notice the plan choice regression, you should find some previous good plan and force it instead of the current one using sp_query_store_force_plan procedure. Datenbank-EngineDatabase Enginein SQL Server 2017 (14.x)SQL Server 2017 (14.x) enthält Informationen zu zurück gestellten Plänen und empfohlenen Korrekturmaßnahmen.in SQL Server 2017 (14.x)SQL Server 2017 (14.x) provides information about regressed plans and recommended corrective actions. Außerdem ermöglicht Datenbank-EngineDatabase Engine es Ihnen, diesen Prozess vollständig zu automatisieren Datenbank-EngineDatabase Engine und das Problem zu beheben, das im Zusammenhang mit den Planänderungen zu finden ist.Additionally, Datenbank-EngineDatabase Engine enables you to fully automate this process and let Datenbank-EngineDatabase Engine fix any problem found related to the plan changes.

Automatische Korrektur der PlanauswahlAutomatic plan choice correction

Datenbank-EngineDatabase Enginekann automatisch zum letzten bekannten guten Plan wechseln, wenn die Plan Auswahl Regression erkannt wird.can automatically switch to the last known good plan whenever the plan choice regression is detected.

Auswahl Korrektur für Abfrage AusführungsplanQuery execution plan choice correction

Datenbank-EngineDatabase Engineerkennt automatisch jede potenzielle Plan Auswahl Regression, einschließlich des Plans, der anstelle des falschen Plans verwendet werden sollte.automatically detects any potential plan choice regression including the plan that should be used instead of the wrong plan. Wenn das Datenbank-EngineDatabase Engine den letzten bekannten guten Plan anwendet, wird automatisch die Leistung des erzwungenen Plans überwacht.When the Datenbank-EngineDatabase Engine applies the last known good plan, it automatically monitors the performance of the forced plan. Wenn der erzwungene Plan nicht besser als der zurück gestellte Plan ist, wird der neue Plan nicht erzwungen, und der Datenbank-EngineDatabase Engine kompiliert einen neuen Plan.If the forced plan is not better than the regressed plan, the new plan will be unforced and the Datenbank-EngineDatabase Engine will compile a new plan. Wenn Datenbank-EngineDatabase Engine überprüft, ob der erzwungene Plan besser als der zurück gestellte Plan ist, wird der erzwungene Plan beibehalten, wenn er besser als der zurück gestellte Plan ist, bis eine erneute Kompilierung stattfindet (z. b. bei der nächsten Statistik Aktualisierung oder bei der Schema Änderung).If the Datenbank-EngineDatabase Engine verifies that the forced plan is better than the regressed plan, the forced plan will be retained if it is better than the regressed plan, until a recompile occurs (for example, on next statistics update or schema change).

Hinweis

Die automatische erzwungene Ausführung von Ausführungsplänen wird zwischen den SQL ServerSQL Server Neustarts der-Instanz nicht beibehalten.Any execution plans auto forced are not persisted between restarts of the SQL ServerSQL Server instance.

Aktivieren der automatischen Korrektur der PlanauswahlEnabling automatic plan choice correction

Sie können die automatische Optimierung pro Datenbank aktivieren und angeben, dass der letzte geeignete Plan erzwungen werden soll, wenn eine Regression der Planänderung erkannt wird.You can enable automatic tuning per database and specify that last good plan should be forced whenever some plan change regression is detected. Die automatische Optimierung wird durch folgenden Befehl aktiviert:Automatic tuning is enabled using the following command:

ALTER DATABASE current
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON ); 

Nachdem Sie diese Option aktiviert haben, Datenbank-EngineDatabase Engine wird von automatisch jede Empfehlung erzwungen, bei der der geschätzte CPU-Zuwachs mehr als 10 Sekunden beträgt, oder die Anzahl der Fehler im neuen Plan ist höher als die Anzahl der Fehler im empfohlenen Plan und überprüft, ob der erzwungene Plan besser als der aktuelle ist.Once you enable this option, the Datenbank-EngineDatabase Engine will automatically force any recommendation where the estimated CPU gain is higher than 10 seconds, or the number of errors in the new plan is higher than the number of errors in the recommended plan, and verify that the forced plan is better than the current one.

Alternative – manuelle Korrektur der PlanauswahlAlternative - manual plan choice correction

Ohne die automatische Optimierung müssen Benutzer ihr System regelmäßig überwachen und nach zurückgestellten Abfragen suchen.Without automatic tuning, users must periodically monitor system and look for the queries that regressed. Wenn ein Plan rückgängig gemacht wurde, sollte der Benutzer einen vorherigen guten Plan suchen und ihn anstelle des aktuellen Verfahrens sp_query_store_force_plan mit der Prozedur erzwingen.If any plan regressed, user should find some previous good plan and force it instead of the current one using sp_query_store_force_plan procedure. Die bewährte Vorgehensweise besteht darin, den letzten als funktionierend bekannten Plan zu erzwingen, da ältere Pläne aufgrund von Statistik-oder Indexänderungen möglicherweise ungültig sind.The best practice would be to force the last known good plan because older plans might be invalid due to statistic or index changes. Der Benutzer, der den letzten bekannten guten Plan erzwingt, sollte die Leistung der Abfrage überwachen, die mit dem erzwungenen Plan ausgeführt wird, und überprüfen, ob der erzwungene Plan erwartungsgemäß funktioniert.The user who forces the last known good plan should monitor performance of the query that is executed using the forced plan and verify that forced plan works as expected. Abhängig von den Ergebnissen der Überwachung und Analyse sollte der Plan erzwungen werden, oder der Benutzer sollte eine andere Möglichkeit finden, um die Abfrage zu optimieren.Depending on the results of monitoring and analysis, plan should be forced or user should find some other way to optimize the query. Manuell erzwungene Pläne sollten nicht immer erzwungen werden, da der Datenbank-EngineDatabase Engine in der Lage sein sollte, optimale Pläne anzuwenden.Manually forced plans should not be forced forever, because the Datenbank-EngineDatabase Engine should be able to apply optimal plans. Der Benutzer oder DBA sollte die Erzwingungs Planung des sp_query_store_unforce_plan Plans schließlich mithilfe der Prozedur Datenbank-EngineDatabase Engine erzwingen und den optimalen Plan suchen lassen.The user or DBA should eventually unforce the plan using sp_query_store_unforce_plan procedure, and let the Datenbank-EngineDatabase Engine find the optimal plan.

Tipp

Verwenden Sie alternativ die Abfragen mit erzwungenen Plänen Abfragespeicher Sicht, um Pläne zu suchen und deren erzwungene aufgängig zu machen.Alternatively, use the Queries With Forced Plans Query Store view to locate and unforce plans.

SQL ServerSQL Serverbietet alle notwendigen Sichten und Prozeduren, die zur Überwachung der Leistung und Behebung von Problemen in Abfragespeicher erforderlich sind.provides all necessary views and procedures required to monitor performance and fix problems in Query Store.

In SQL Server 2016 (13.x)SQL Server 2016 (13.x)können Sie mit Abfragespeicher System Sichten Plan Auswahl Regressionen suchen.In SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can find plan choice regressions using Query Store system views. In SQL Server 2017 (14.x)SQL Server 2017 (14.x) Datenbank-EngineDatabase Engine erkennt und zeigt mögliche Regressionen der Plan Auswahl und die empfohlenen Aktionen an, die in der)Sicht sys. dm_db_tuning_recommendations (Transact-SQL angewendet werden sollen.In SQL Server 2017 (14.x)SQL Server 2017 (14.x), the Datenbank-EngineDatabase Engine detects and shows potential plan choice regressions and the recommended actions that should be applied in the sys.dm_db_tuning_recommendations (Transact-SQL) view. Die Sicht zeigt Informationen zum Problem, die Wichtigkeit des Problems und Details wie z. b. die identifizierte Abfrage, die ID des zurück gestellten Plans, die ID des Plans, der als Baseline für den Vergleich verwendet wurde, und Transact-SQLTransact-SQL die Anweisung, die ausgeführt werden kann, um das Problem zu beheben.The view shows information about the problem, the importance of the issue, and details such as the identified query, the ID of the regressed plan, the ID of the plan that was used as baseline for comparison, and the Transact-SQLTransact-SQL statement that can be executed to fix the problem.

typetype descriptiondescription datetimedatetime Ergebnis Ihrer Appscore Detailsdetails ......
FORCE_LAST_GOOD_PLAN Die CPU-Zeit wurde von 4 ms auf 14 ms geändert.CPU time changed from 4 ms to 14 ms 3/17/20173/17/2017 8383 queryId recommendedPlanId regressedPlanId T-SQLqueryId recommendedPlanId regressedPlanId T-SQL
FORCE_LAST_GOOD_PLAN Die CPU-Zeit wurde von 37 MS auf 84 MS geändert.CPU time changed from 37 ms to 84 ms 3/16/20173/16/2017 2626 queryId recommendedPlanId regressedPlanId T-SQLqueryId recommendedPlanId regressedPlanId T-SQL

Einige Spalten aus dieser Sicht werden in der folgenden Liste beschrieben:Some columns from this view are described in the following list:

  • Typ der empfohlenen Aktion:FORCE_LAST_GOOD_PLANType of the recommended action - FORCE_LAST_GOOD_PLAN
  • Beschreibung, die Informationen enthält Datenbank-EngineDatabase Engine , warum diese Planänderung eine potenzielle Leistungs Regression istDescription that contains information why Datenbank-EngineDatabase Engine thinks that this plan change is a potential performance regression
  • DateTime-Wert, wenn die potenzielle Regression erkannt wirdDatetime when the potential regression is detected
  • Bewertung dieser EmpfehlungScore of this recommendation
  • Details zu den Problemen, wie z. b. die ID des erkannten Plans, die ID des zurück gestellten Plans, die ID des Plans, der zur Behebung des Transact-SQLTransact-SQL Problems gezwungen werden soll, das Skript, das ggf. zur Behebung des Problems verwendet werden kann, usw. Details werden im JSON-Format gespeichert.Details about the issues such as ID of the detected plan, ID of the regressed plan, ID of the plan that should be forced to fix the issue, Transact-SQLTransact-SQL script that might be applied to fix the issue, etc. Details are stored in JSON format

Verwenden Sie die folgende Abfrage zum Abrufen eines Skripts, das das Problem behebt, und zusätzliche Informationen zum geschätzten Gewinn:Use the following query to obtain a script that fixes the issue and additional information about the estimated gain:

SELECT reason, score,
      script = JSON_VALUE(details, '$.implementationDetails.script'),
      planForceDetails.*,
      estimated_gain = (regressedPlanExecutionCount + recommendedPlanExecutionCount)
                  * (regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage)/1000000,
      error_prone = IIF(regressedPlanErrorCount > recommendedPlanErrorCount, 'YES','NO')
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON (Details, '$.planForceDetails')
    WITH (  [query_id] int '$.queryId',
            regressedPlanId int '$.regressedPlanId',
            recommendedPlanId int '$.recommendedPlanId',
            regressedPlanErrorCount int,
            recommendedPlanErrorCount int,
            regressedPlanExecutionCount int,
            regressedPlanCpuTimeAverage float,
            recommendedPlanExecutionCount int,
            recommendedPlanCpuTimeAverage float
          ) AS planForceDetails;

Hier ist das Resultset.Here is the result set.

reasonreason Ergebnis Ihrer Appscore scriptscript Abfrage_-IDquery_id ID des_aktuellen Planscurrent plan_id Empfohlene Plan_-IDrecommended plan_id Geschätzter_Gewinnestimated_gain Fehler_anfälligerror_prone
Die CPU-Zeit wurde von 3 MS in 46 MS geändert.CPU time changed from 3 ms to 46 ms 3636 Exec SP_Query_Store_Force_Plan 12, 17;EXEC sp_query_store_force_plan 12, 17; 1212 2828 1717 11,5911.59 00

estimated_gainstellt die geschätzte Anzahl von Sekunden dar, die gespeichert werden, wenn der empfohlene Plan anstelle des aktuellen Plans ausgeführt würde.estimated_gain represents the estimated number of seconds that would be saved if the recommended plan would be executed instead of the current plan. Der empfohlene Plan sollte anstelle des aktuellen Plans erzwungen werden, wenn der Gewinn größer als 10 Sekunden ist.The recommended plan should be forced instead of the current plan if the gain is greater than 10 seconds. Wenn im aktuellen Plan mehr Fehler (z. b. Timeouts oder abgebrochene Ausführungen) als im empfohlenen Plan vorhanden sind, wird die Spalte error_prone auf den Wert YESfestgelegt.If there are more errors (for example, time-outs or aborted executions) in the current plan than in the recommended plan, the column error_prone would be set to the value YES. Der fehleranfällige Plan ist ein weiterer Grund, warum der empfohlene Plan anstelle des aktuellen Plans erzwungen werden sollte.Error prone plan is another reason why the recommended plan should be forced instead of the current one.

Stellt Datenbank-EngineDatabase Engine zwar alle Informationen bereit, die zum Identifizieren von Plan Auswahl Regressionen erforderlich sind, die kontinuierliche Überwachung und das Beheben von Leistungsproblemen kann ein mühsamer Prozess sein.Although Datenbank-EngineDatabase Engine provides all information required to identify plan choice regressions; continuous monitoring and fixing performance issues might be a tedious process. Durch die automatische Optimierung wird dieser Prozess erheblich vereinfacht.Automatic tuning makes this process much easier.

Hinweis

Die Daten in der sys. dm_db_tuning_recommendations-DMV werden zwischen den SQL ServerSQL Server Neustarts der Instanz nicht beibehalten.Data in the sys.dm_db_tuning_recommendations DMV is not persisted between restarts of the SQL ServerSQL Server instance.

Automatische IndexverwaltungAutomatic index management

In Azure SQL-DatenbankAzure SQL Databaseist die Index Verwaltung einfach, Azure SQL-DatenbankAzure SQL Database da ihre Arbeitsauslastung erfährt und sicherstellt, dass Ihre Daten immer optimal indiziert werden.In Azure SQL-DatenbankAzure SQL Database, index management is easy because Azure SQL-DatenbankAzure SQL Database learns about your workload and ensures that your data is always optimally indexed. Das richtige Indexdesign ist von entscheidender Bedeutung für die optimale Leistung Ihrer Workload, und die automatische Indexverwaltung kann Ihnen bei der Optimierung Ihrer Indizes behilflich sein.Proper index design is crucial for optimal performance of your workload, and automatic index management can help you optimize your indexes. Mit der automatischen Indexverwaltung können entweder Leistungsprobleme in falsch indizierten Datenbanken behoben werden, oder es können Indizes im vorhandenen Datenbankschema verwaltet und verbessert werden.Automatic index management can either fix performance issues in incorrectly indexed databases, or maintain and improve indexes on the existing database schema. Die automatische Optimierung Azure SQL-DatenbankAzure SQL Database in führt die folgenden Aktionen aus:Automatic tuning in Azure SQL-DatenbankAzure SQL Database performs the following actions:

  • Identifiziert Indizes, die die Leistung Ihrer Transact-SQLTransact-SQL Abfragen verbessern können, die Daten aus den Tabellen lesen.Identifies indexes that could improve performance of your Transact-SQLTransact-SQL queries that read data from the tables.
  • Identifiziert die redundanten Indizes oder Indizes, die nicht in längerer Zeit verwendet wurden, die entfernt werden konnten.Identifies the redundant indexes or indexes that were not used in longer period of time that could be removed. Durch das Entfernen unnötiger Indizes wird die Leistung von Abfragen verbessert, die Daten in Tabellen aktualisieren.Removing unnecessary indexes improves performance of the queries that update data in tables.

Gründe für die Nutzung der IndexverwaltungWhy do you need index management?

Mit Indizes werden einige Ihrer Abfragen beschleunigt, mit denen Daten aus Ihren Tabellen gelesen werden. Für die Abfragen, mit denen Daten aktualisiert werden, können sie aber eine Verlangsamung bewirken.Indexes speed up some of your queries that read data from the tables; however, they can slow down the queries that update data. Sie müssen sorgfältig analysieren, wann Sie einen Index erstellen und welche Spalten Sie in den Index einbinden müssen.You need to carefully analyze when to create an index and what columns you need to include in the index. Einige Indizes werden nach einiger Zeit unter Umständen nicht mehr benötigt.Some indexes might not be needed after some time. Aus diesem Grund müssen Sie die Indizes, die nicht zu Vorteilen führen, regelmäßig identifizieren und verwerfen.Therefore, you would need to periodically identify and drop the indexes that do not bring any benefits. Wenn Sie die nicht genutzten Indizes ignorieren, verringert sich die Leistung der Abfragen, mit denen Daten aktualisiert werden, ohne dass sich Vorteile für die Abfragen zum Lesen von Daten ergeben.If you ignore the unused indexes, performance of the queries that update data would be decreased without any benefit on the queries that read data. Nicht verwendete Indizes wirken sich außerdem auf die Gesamtleistung des Systems aus, da für zusätzliche Updates eine unnötige Protokollierung erforderlich ist.Unused indexes also affect overall performance of the system because additional updates require unnecessary logging.

Zur Ermittlung des optimalen Satzes mit Indizes, mit denen die Leistung der Abfragen zum Lesen von Daten aus Ihren Tabellen verbessert wird und die eine minimale Auswirkung auf Updates hat, ist ggf. eine fortlaufende und komplexe Analyse erforderlich.Finding the optimal set of indexes that improve performance of the queries that read data from your tables and have minimal impact on updates might require continuous and complex analysis.

Azure SQL-DatenbankAzure SQL Databaseverwendet integrierte und erweiterte Regeln, mit denen Ihre Abfragen analysiert, Indizes identifiziert werden, die für Ihre aktuellen Workloads optimal geeignet sind, und die Indizes möglicherweise entfernt werden.uses built-in intelligence and advanced rules that analyze your queries, identify indexes that would be optimal for your current workloads, and the indexes might be removed. Mit Azure SQL-Datenbank wird sichergestellt, dass Sie über einen erforderlichen Mindestsatz von Indizes verfügen, mit denen die Abfragen zum Lesen von Daten optimiert werden und sich nur geringe Auswirkungen auf andere Abfragen ergeben.Azure SQL Database ensures that you have a minimal necessary set of indexes that optimize the queries that read data, with the minimized impact on the other queries.

Automatische IndexverwaltungAutomatic index management

Zusätzlich zur Erkennung können identifizierte Azure SQL-DatenbankAzure SQL Database Empfehlungen von automatisch angewendet werden.In addition to detection, Azure SQL-DatenbankAzure SQL Database can automatically apply identified recommendations. Wenn Sie feststellen, dass die integrierten Regeln die Leistung Ihrer Datenbank verbessern, können Sie die Azure SQL-DatenbankAzure SQL Database Indizes automatisch verwalten.If you find that the built-in rules improve the performance of your database, you might let Azure SQL-DatenbankAzure SQL Database automatically manage your indexes.

Informationen zum Aktivieren der automatischen Azure SQL-DatenbankAzure SQL Database Optimierung in und zur vollständigen Verwaltung der Arbeitsauslastung durch die Funktion zur automatischen Optimierung finden Sie unter Aktivieren der automatischen Optimierung in Azure SQL-Datenbank mithilfe von Azure-Portal.To enable automatic tuning in Azure SQL-DatenbankAzure SQL Database and allow the automatic tuning feature to fully manage your workload, see Enable automatic tuning in Azure SQL Database using Azure portal.

Wenn eine Azure SQL-DatenbankAzure SQL Database Create Index-oder Drop Index-Empfehlung anwendet, wird automatisch die Leistung der Abfragen überwacht, die vom Index betroffen sind.When the Azure SQL-DatenbankAzure SQL Database applies a CREATE INDEX or DROP INDEX recommendation, it automatically monitors the performance of the queries that are affected by the index. Der neue Index wird nur beibehalten, wenn die Leistung der betroffenen Abfragen verbessert wird.New index will be retained only if performances of the affected queries are improved. Der gelöschte Index wird automatisch neu erstellt, wenn einige Abfragen aufgrund der Abwesenheit des Indexes langsamer ausgeführt werden.Dropped index will be automatically re-created if there are some queries that run slower due to the absence of the index.

Aspekte der automatischen IndexverwaltungAutomatic index management considerations

Aktionen, die erforderlich sind, um Azure SQL-DatenbankAzure SQL Database erforderliche Indizes in zu erstellen, können Ressourcen beanspruchen und die workloadleistung temporellActions required to create necessary indexes in Azure SQL-DatenbankAzure SQL Database might consume resources and temporally affect workload performance. Um die Auswirkungen der Indexerstellung auf die workloadleistung zu minimieren, Azure SQL-DatenbankAzure SQL Database sucht das entsprechende Zeitfenster für jeden Index Verwaltungsvorgang.To minimize the impact of index creation on workload performance, Azure SQL-DatenbankAzure SQL Database finds the appropriate time window for any index management operation. Ein Optimierungsvorgang wird verschoben, wenn die Datenbank Ressourcen zum Ausführen Ihrer Workload benötigt, und gestartet, wenn die Datenbank über genügend ungenutzte Ressourcen verfügt, die für die Wartungsaufgabe verwendet werden können.Tuning action is postponed if the database needs resources to execute your workload, and started when the database has enough unused resources that can be used for the maintenance task. Ein wichtiges Feature der automatischen Indexverwaltung ist die Überprüfung der Aktionen.One important feature in automatic index management is a verification of the actions. Wenn Azure SQL-DatenbankAzure SQL Database Index erstellt oder gelöscht wird, analysiert ein Überwachungsprozess die Leistung der Arbeitsauslastung, um zu überprüfen, ob die Leistung durch die Aktion verbessert wurde.When Azure SQL-DatenbankAzure SQL Database creates or drops index, a monitoring process analyzes performance of your workload to verify that the action improved the performance. Wenn dies nicht zu einer erheblichen Verbesserung geführt hat, wird die Aktion sofort wieder hergestellt.If it didn't bring significant improvement - the action is immediately reverted. Auf diese Weise Azure SQL-DatenbankAzure SQL Database wird sichergestellt, dass sich automatische Aktionen nicht negativ auf die Leistung der Arbeitsauslastung auswirken.This way, Azure SQL-DatenbankAzure SQL Database ensures that automatic actions do not negatively impact performance of your workload. Indizes, die mit der automatischen Optimierung erstellt werden, sind für den Wartungsvorgang des zugrunde liegenden Schemas transparent.Indexes created by automatic tuning are transparent for the maintenance operation on the underlying schema. Schemaänderungen, wie das Verwerfen oder Umbenennen von Spalten, werden durch das Vorhandensein von automatisch erstellten Indizes nicht blockiert.Schema changes such as dropping or renaming columns are not blocked by the presence of automatically created indexes. Indizes, die automatisch von Azure SQL-DatenbankAzure SQL Database erstellt werden, werden sofort gelöscht, wenn verknüpfte Tabellen oder Spalten gelöscht werden.Indexes that are automatically created by Azure SQL-DatenbankAzure SQL Database are immediately dropped when related table or columns is dropped.

Alternative: manuelle Index VerwaltungAlternative - manual index management

Ohne die automatische Index Verwaltung müsste der Benutzer sys. dm_db_missing_index_details (Transact-SQL-) anzeigen oder den leistungsdashboardbericht in Management StudioManagement Studio verwenden, um Indizes zu suchen, die möglicherweise die Leistung verbessern, Indizes mithilfe der in dieser Ansicht bereitgestellten Details erstellen und die Leistung der Abfrage manuell überwachen.Without automatic index management, user would need to manually query sys.dm_db_missing_index_details (Transact-SQL) view or use the Performance Dashboard report in Management StudioManagement Studio to find indexes that might improve performance, create indexes using the details provided in this view, and manually monitor performance of the query. Um die Indizes zu ermitteln, die gelöscht werden sollen, sollten die Benutzer die Betriebs Verwendungs Statistik der Indizes überwachen, um selten verwendete Indizes zu finden.In order to find the indexes that should be dropped, users should monitor operational usage statistics of the indexes to find rarely used indexes.

Azure SQL-DatenbankAzure SQL Databasevereinfacht diesen Prozess.simplifies this process. Azure SQL-DatenbankAzure SQL Databaseanalysiert ihre Arbeitsauslastung, identifiziert die Abfragen, die mit einem neuen Index schneller ausgeführt werden können, und identifiziert nicht verwendete oder duplizierte Indizes.analyzes your workload, identifies the queries that could be executed faster with a new index, and identifies unused or duplicated indexes. Weitere Informationen zur Identifikation von Indizes, die geändert werden sollten, finden Sie unter Azure SQL Database Advisor im Azure-Portal.Find more information about identification of indexes that should be changed at Find index recommendations in Azure portal.

Weitere InformationenSee Also

ALTER DATABASE SET AUTOMATIC_TUNING (Transact-SQL-) ALTER DATABASE SET AUTOMATIC_TUNING (Transact-SQL)
sys. database_automatic_tuning_options (Transact-SQL-)sys.database_automatic_tuning_options (Transact-SQL)
sys. dm_db_tuning_recommendations (Transact-SQL-) sys.dm_db_tuning_recommendations (Transact-SQL)
sys. dm_db_missing_index_details (Transact-SQL-) sys.dm_db_missing_index_details (Transact-SQL)
sp_query_store_force_plan (Transact-SQL-) sp_query_store_force_plan (Transact-SQL)
sp_query_store_unforce_plan (Transact-SQL-) sp_query_store_unforce_plan (Transact-SQL)
sys. database_query_store_options (Transact-SQL-) sys.database_query_store_options (Transact-SQL)
JSON-Funktionen JSON functions
Ausführungspläne Execution Plans
Überwachen und Optimieren der Leistung Monitor and Tune for Performance
Tools für die Leistungsüberwachung und -optimierung Performance Monitoring and Tuning Tools
Überwachen der Leistung mit dem AbfragespeicherMonitoring Performance By Using the Query Store
Abfrageoptimierungs-AssistentQuery Tuning Assistant