Automatische OptimierungAutomatic tuning

Gilt für: JaSQL Server JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server 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.

Automatische Optimierung in SQL Server 2017 (14.x)SQL Server 2017 (14.x) benachrichtigt Sie, wenn ein mögliches Leistungsproblem erkannt wird. zudem Sie die korrigierende Aktionen angewendet werden sollen können, oder Sie können die Datenbank-EngineDatabase Engine Leistungsprobleme automatisch beheben.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. Automatische Optimierung in SQL Server 2017 (14.x)SQL Server 2017 (14.x) ermöglicht es Ihnen, identifizieren und Beheben von Leistungsproblemen aufgrund Execution Plan Choice abfrageregressionen.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. Automatische Optimierung in Azure SQL-DatenbankAzure SQL Database auch die erforderlichen Indizes erstellt und löscht nicht verwendete Indizes.Automatic tuning in Azure SQL-DatenbankAzure SQL Database also creates necessary indexes and drops unused indexes. Weitere Informationen zu Abfrageausführungspläne, finden Sie unter Ausführungspläne.For more information on query execution plans, see Execution Plans.

Die SQL Server-Datenbank-EngineSQL Server Database Engine verbessert die Leistung der Workload, überwacht die Abfragen, die in der Datenbank und automatisch ausgeführt werden.The SQL Server-Datenbank-EngineSQL Server Database Engine monitors the queries that are executed on the database and automatically improves performance of the workload. Die Datenbank-EngineDatabase Engine verfügt über einen integrierten intelligenten Funktionen Mechanismus, der automatisch optimiert werden kann, und Verbessern der Leistung Ihrer Abfragen durch die dynamische Anpassung der Datenbank an Ihre Workload.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 gibt zwei Automatische Optimierung Features, die verfügbar sind:There are two automatic tuning features that are available:

  • Automatische plankorrektur problematische Abfragen, Pläne und korrigiert abfrageausführung Leistungsprobleme Plänen identifiziert.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
  • Automatische indexverwaltung identifiziert Indizes, die in der Datenbank hinzugefügt werden soll, und solche, die entfernt werden soll.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

Warum die automatische Optimierung?Why automatic tuning?

Drei der Hauptaufgabe bei der Verwaltung von klassischen Datenbanken sind das Überwachen der Workload, identifizieren kritische Transact-SQLTransact-SQL abfragt, Indizes, die hinzugefügt, um die Leistung zu verbessern und identifizierende selten verwendet werden sollen.Three 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. Die 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. Kontinuierliche Überwachung der eine 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. Verwalten einer großen Anzahl von Datenbanken möglicherweise nicht möglich, effizient durchführen.Managing a huge number of databases might be impossible to do efficiently. Anstelle der manuellen Überwachung und Optimierung Ihrer Datenbank, sollten Sie erwägen, einige für die Überwachung zu delegieren und Optimieren von Aktionen, die die Datenbank-EngineDatabase Engine mithilfe von Features zur automatischen Optimierung.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 eine kontinuierliche Überwachung und Analyseprozess, der über die Merkmale Ihrer Workload ständig lernen und identifizieren Sie potenzielle Probleme und verbesserungsmöglichkeiten.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

Dieser Prozess ermöglicht es Datenbank eine dynamische Anpassung an Ihre Workload durch suchen, welche Indizes und Pläne die Leistung Ihrer Workloads verbessern können und welche Indizes Ihre Workloads auswirken.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, gilt die automatische Optimierung optimierungsaktionen, die die Leistung Ihrer Workload zu verbessern.Based on these findings, automatic tuning applies tuning actions that improve performance of your workload. Darüber hinaus überwacht Datenbank kontinuierlich die Leistung nach jeder Änderung, die von der automatischen Optimierung vorgenommen werden, um sicherzustellen, dass sie die Leistung Ihrer Workload verbessert.In addition, database continuously monitors performance after any change made by automatic tuning to ensure that it improves performance of your workload. Alle Aktionen, die Leistung zu verbessern, nicht haben wird automatisch zurückgesetzt.Any action that didn't improve performance is automatically reverted. Diese Überprüfung ist ein wichtiges Feature, das sicherstellt, dass jede Änderung, die von der automatischen Optimierung der Leistung Ihrer Workload nicht verringert.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 plankorrekturAutomatic plan correction

Automatische plankorrektur ist ein Feature der automatischen Optimierung, die identifiziert Wahl Regression von Ausführungsplänen und automatisch das Problem beheben, indem Sie den letzten bekannten guten Plan zu erzwingen.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 Abfrageausführungspläne und der Abfrageoptimierer, finden Sie unter den Query Processing Architecture Guide.For more information about query execution plans and the query optimizer, see the Query Processing Architecture Guide.

Was ist die Ausführung von planauswahlen?What is execution plan choice regression?

Die SQL Server-Datenbank-EngineSQL Server Database Engine können Sie verschiedenen Ausführungsplänen führen Sie die Transact-SQLTransact-SQL Abfragen.The SQL Server-Datenbank-EngineSQL Server Database Engine may use different execution plans to execute the Transact-SQLTransact-SQL queries. Abfragepläne, abhängig von der Statistik, Indizes und anderen Faktoren ab.Query plans depend on the statistics, indexes, and other factors. Der optimale Plan, die verwendet werden soll, um einige auszuführen Transact-SQLTransact-SQL Abfrage im Laufe der Zeit ändern kann.The optimal plan that should be used to execute some Transact-SQLTransact-SQL query might be changed over time. In einigen Fällen der neue Plan besser als die vorherige Version möglicherweise nicht, und der neue Plan kann einem Leistungsverlust 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.

Abfragen von planauswahlen AusführungQuery execution plan choice regression

Wenn Sie eine Regression der Planauswahl feststellen, sollten finden Sie einige vorherige gute Planung und ihn zwingen, anstatt die aktuelle eine sp_query_store_force_plan Verfahren.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 Engine in SQL Server 2017 (14.x)SQL Server 2017 (14.x) enthält Informationen zu einem Regress geführt hatten Pläne und korrigierende Maßnahmen empfohlen.in SQL Server 2017 (14.x)SQL Server 2017 (14.x) provides information about regressed plans and recommended corrective actions. Darüber hinaus Datenbank-EngineDatabase Engine ermöglicht es Ihnen, vollständig diesen Prozess auch automatisieren, und lassen Sie Datenbank-EngineDatabase Engine beheben Sie alle gefundenen Probleme im Zusammenhang mit den Änderungen an Abfrageplänen.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 Engine können automatisch in den letzten bekannten guten Plan wechselt, wenn Regression der Planauswahl erkannt wird.can automatically switch to the last known good plan whenever the plan choice regression is detected.

Fragen Sie die Ausführung der PlanauswahlQuery execution plan choice correction

Datenbank-EngineDatabase Engine erkennt automatisch alle potenziellen planauswahlen, einschließlich des Plans, der statt des falschen Plans verwendet werden soll.automatically detects any potential plan choice regression including the plan that should be used instead of the wrong plan. Wenn die Datenbank-EngineDatabase Engine wendet den letzten bekannten geeigneten Plan, 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ückgestellte Plan ist, wird der neue Plan mehr erzwungen werden und die Datenbank-EngineDatabase Engine wird einen neuen Plan kompiliert.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 die Datenbank-EngineDatabase Engine bestätigt, dass der erzwungene Plan besser als der zurückgestellte Plan ist, wird der erzwungene Plan beibehalten werden, ist es besser, als der zurückgestellte Plan ist, bis zum Auftreten eine Neukompilierung (z. B. auf die nächste Änderung der Statistiken aktualisieren "oder" Schema).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

Jede Ausführung Pläne automatisch erzwungen werden nicht beibehalten, nach einem Neustart von der SQL ServerSQL Server Instanz.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 die Datenbank-EngineDatabase Engine automatisch jede Empfehlung, in denen die geschätzte CPU-Gewinn größer als 10 Sekunden ist, oder die Anzahl von Fehlern im neuen Plan ist höher als die Anzahl von Fehlern im empfohlenen Plan, und überprüfen Sie, ob die Erzwungene Plan ist besser als die der aktuellen Aktivität.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 Pläne zurückgestellt wurden, sollten Benutzer gefunden, einige vorherige gute Planung und ihn zwingen, anstatt die aktuelle eine sp_query_store_force_plan Verfahren.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 Methode wäre, die den letzten bekannten guten Plan erzwungen werden, weil ältere Pläne möglicherweise aufgrund von Änderungen der Statistik oder ein Index ungültig.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, die erzwingt, die letzten bekannten guten Plan dass sollte Überwachen der Leistung der Abfragen, die mit der erzwungene Plan ausgeführt wird, und überprüfen Sie, der erzwungenen Plan wie erwartet 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 Plan erzwungen werden soll, oder Benutzer sollte eine andere Möglichkeit zum Optimieren der Abfrage zu suchen.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änen sollte nicht dauerhaft, erzwungen werden, da die Datenbank-EngineDatabase Engine optimalen Plänen anwenden können.Manually forced plans should not be forced forever, because the Datenbank-EngineDatabase Engine should be able to apply optimal plans. Der Benutzer oder der Datenbankadministrator sollte schließlich Erzwingung der Plan mit sp_query_store_unforce_plan Prozedur ab, und die Datenbank-EngineDatabase Engine den optimalen Plan zu finden.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

Alternativelly, verwenden die Abfragen mit erzwungenen Plänen Query Store Sicht zu suchen und die Erzwingung des Plans.Alternativelly, use the Queries With Forced Plans Query Store view to locate and unforce plans.

SQL ServerSQL Server umfasst alle erforderlichen Sichten und Prozeduren zum Überwachen der Leistung und Beheben von Problemen in Query Store 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), finden Sie Plan planauswahlregression Systemsichten Query Store verwenden.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 potenzielle planregressionen Wahl und die empfohlenen Aktionen, die in angewendet werden sollen die dm_db_tuning_recommendations (Transact-SQL) anzeigen.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 Ansicht zeigt Informationen über das Problem, das die Wichtigkeit des Problems und Details wie den identifizierten Abfragen, die von der zurückgestellte Plan-ID, die ID des Plans, der als Baseline zum Vergleich verwendet wurde und die Transact-SQLTransact-SQL -Anweisung, die ausgeführt werden kann, lösen Sie die Problem.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.

Typtype descriptiondescription DATETIMEdatetime scorescore Detailsdetails ......
FORCE_LAST_GOOD_PLAN CPU-Zeit, die von 4 ms in 14 ms geändertCPU 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 CPU-Zeit, die von 37 ms in 84 ms geändertCPU 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 in dieser Ansicht werden in der folgenden Liste beschrieben:Some columns from this view are described in the following list:

  • Typ, der die empfohlene Aktion: FORCE_LAST_GOOD_PLANType of the recommended action - FORCE_LAST_GOOD_PLAN
  • Beschreibung, die Informationen, warum enthält Datenbank-EngineDatabase Engine davon ausgeht, dass diese Änderung des Plans ein potenzieller Leistungsverlust wirdDescription that contains information why Datenbank-EngineDatabase Engine thinks that this plan change is a potential performance regression
  • "DateTime", wenn die mögliche Regression erkannt wirdDatetime when the potential regression is detected
  • Bewertung von dieser EmpfehlungScore of this recommendation
  • Details zu den Problemen wie z. B. die ID des erkannten Plan-ID des der zurückgestellte Plan mit der ID des Plans, die erzwungen werden soll, um das Problem zu beheben Transact-SQLTransact-SQL Skripts, die zum Beheben des Problems usw. angewendet werden kann. Details werden gespeichert, JSON-FormatDetails 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 aus, um ein Skript zu erhalten, die das Problem und zusätzliche Informationen zu den geschätzten Korrekturen erhalten: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;

Im Folgenden finden Sie das Resultset.Here is the result set.

reasonreason scorescore Skript (script)script Abfrage_Idquery_id Aktueller Plan_Idcurrent plan_id Empfohlene Plan_Idrecommended plan_id Geschätzte_zu erhaltenestimated_gain Fehler_fehleranfälligerror_prone
CPU-Zeit von 3 ms in 46 ms geändertCPU time changed from 3 ms to 46 ms 3636 EXEC sp_Abfrage_speichern_erzwingen_Plan 12, 17;EXEC sp_query_store_force_plan 12, 17; 1212 2828 1717 11.5911.59 00

estimated_gain Stellt die geschätzte Anzahl von Sekunden an, die gespeichert werden würde, wenn es sich bei der empfohlenen Plan statt des aktuellen Plans ausgeführt werden.estimated_gain represents the estimated number of seconds that would be saved if the recommended plan would be executed instead of the current plan. Empfohlene Plan sollte anstelle der aktuellen Plan 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 weitere Fehler vorliegen (z. B. Timeouts oder abgebrochene Ausführungen) im aktuellen Plan als in der empfohlenen planen, die Spalte error_prone festgelegt werden sollen, auf den Wert YES.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. Fehler verursachenden Plan ist ein weiterer Grund, warum die empfohlenen Plan anstelle des aktuellen erzwungen werden soll.Error prone plan is another reason why the recommended plan should be forced instead of the current one.

Obwohl Datenbank-EngineDatabase Engine enthält alle Informationen, die zum Identifizieren Ihrer Wahl planregressionen; kontinuierliche das überwachungs- und das Beheben von Leistungsproblemen erforderlich sind, möglicherweise eine mühsame Angelegenheit.Although Datenbank-EngineDatabase Engine provides all information required to identify plan choice regressions; continuous monitoring and fixing performance issues might be a tedious process. Die automatische Optimierung vereinfacht diesen Prozess.Automatic tuning makes this process much easier.

Hinweis

Daten in der DMV dm_db_tuning_recommendations werden nicht beibehalten, nach einem Neustart von der SQL ServerSQL Server Instanz.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 Database, indexverwaltung ist einfach weil Azure SQL-DatenbankAzure SQL Database Features, die über Ihre arbeitsauslastung und stellt sicher, dass Ihre Daten immer optimal indiziert sind.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 entscheidend für eine optimale Leistung Ihrer Workload und automatische indexverwaltung können Sie die Optimierung Ihrer Indizes.Proper index design is crucial for optimal performance of your workload, and automatic index management can help you optimize your indexes. Automatische indexverwaltung kann entweder beheben Sie Leistungsprobleme in falsch indizierten Datenbanken oder verwalten und verbessern Sie die Indizes auf das vorhandene Datenbankschema.Automatic index management can either fix performance issues in incorrectly indexed databases, or maintain and improve indexes on the existing database schema. Automatische Optimierung in Azure SQL-DatenbankAzure SQL Database führt folgende Aktionen aus:Automatic tuning in Azure SQL-DatenbankAzure SQL Database performs the following actions:

  • Identifiziert Indizes, die Leistung verbessern könnten Ihre Transact-SQLTransact-SQL Abfragen, die Daten aus den Tabellen zu lesen.Identifies indexes that could improve performance of your Transact-SQLTransact-SQL queries that read data from the tables.
  • Identifiziert die redundante Indizes oder Indizes, die in längeren Zeitraum nicht verwendet wurden, die entfernt werden konnte.Identifies the redundant indexes or indexes that were not used in longer period of time that could be removed. Entfernen unnötiger Indizes verbessert die Leistung der Abfragen, die Daten in Tabellen zu aktualisieren.Removing unnecessary indexes improves performance of the queries that update data in tables.

Warum benötigen Sie die indexverwaltung?Why do you need index management?

Indizes, beschleunigen Sie einige Abfragen, die Daten aus den Tabellen zu lesen; Allerdings können sie die Abfragen verlangsamt, die Daten aktualisieren.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 Sie beim Erstellen einen Index und welche Spalten in den Index aufgenommen werden sollen.You need to carefully analyze when to create an index and what columns you need to include in the index. Einige Indizes können nicht nach einiger Zeit erforderlich sein.Some indexes might not be needed after some time. Daher müssten Sie regelmäßig identifizieren und verwerfen die Indizes, die kein Vorteilen führen.Therefore, you would need to periodically identify and drop the indexes that do not bring any benefits. Wenn Sie die nicht genutzten Indizes ignorieren, würde Leistung der Abfragen, die Daten aktualisieren, ohne dass sich Vorteile für Abfragen verringert werden, die Daten lesen.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 auch auf die gesamtleistung des Systems aus, da zusätzliche Updates unnötige Protokollierung erforderlich ist.Unused indexes also affect overall performance of the system because additional updates require unnecessary logging.

Ermitteln des optimalen Satzes mit Indizes, die Leistung der Abfragen zu verbessern, die Daten aus Ihren Tabellen gelesen und eine minimale Auswirkung auf Updates möglicherweise eine fortlaufende und komplexe Analyse.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 Database verwendet integrierte Intelligenz und erweiterte Regeln, die Ihren Abfragen zu analysieren, identifizieren Indizes, die für Ihre aktuellen Workloads optimal, und die Indizes entfernt werden können.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. Azure SQL-Datenbank wird sichergestellt, dass Sie einen erforderlichen Mindestsatz von Indizes verfügen, die die Abfragen zu optimieren, die Daten mit Auswirkungen auf andere Abfragen zu lesen.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 Azure SQL-DatenbankAzure SQL Database identifizierte Empfehlungen automatisch angewendet werden können.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 möglicherweise Azure SQL-DatenbankAzure SQL Database automatisch Ihre Indizes zu 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.

Zum Aktivieren der automatischen Optimierung Azure SQL-DatenbankAzure SQL Database und ermöglicht das automatische Abstimmungsfeature vollständig Ihrer Workload zu verwalten, 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 die Azure SQL-DatenbankAzure SQL Database gilt eine CREATE Index- oder DROP INDEX-Empfehlung, es überwacht automatisch die Leistung von Abfragen, die der 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. Neuer Index werden nur dann, wenn die Leistung der betroffen Abfragen verbessert werden beibehalten.New index will be retained only if performances of the affected queries are improved. Der gelöschte Index werden automatisch neu erstellt, wenn einige Abfragen, die aufgrund eines fehlenden Indexes langsamer ausgeführt.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

Die erforderlichen Aktionen zum Erstellen von erforderlichen Indizes in Azure SQL-DatenbankAzure SQL Database möglicherweise verbrauchen Ressourcen und Workloads vorübergehend beeinträchtigt.Actions required to create necessary indexes in Azure SQL-DatenbankAzure SQL Database might consume resources and temporally affect workload performance. Zur Minimierung der Auswirkung der indexerstellung für die arbeitsauslastungsleistung, Azure SQL-DatenbankAzure SQL Database findet das passende Zeitfenster für jeden Index-Management-Vorgang.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. Optimierungsvorgang wird verschoben, wenn die Datenbank Ressourcen zum Ausführen Ihrer Workload benötigt, und gestartet, wenn die Datenbank mit ausreichend freiem ungenutzte Ressourcen, 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 eine Überprüfung der Aktionen.One important feature in automatic index management is a verification of the actions. Wenn Azure SQL-DatenbankAzure SQL Database erstellt oder löscht Index ein Überwachungsprozess analysiert die Leistung Ihrer Workload, um sicherzustellen, dass die Aktion, die Leistung verbessert.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 sie bedeutende Verbesserung - bringen nicht wird die Aktion sofort rückgängig gemacht werden.If it didn't bring significant improvement - the action is immediately reverted. Auf diese Weise Azure SQL-DatenbankAzure SQL Database wird sichergestellt, dass automatische Aktionen nicht negativ auf Leistung Ihrer Workload auswirken.This way, Azure SQL-DatenbankAzure SQL Database ensures that automatic actions do not negatively impact performance of your workload. Indizes, die von der automatischen Optimierung erstellt 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, indem erstellt werden Azure SQL-DatenbankAzure SQL Database werden sofort gelöscht wird, wenn im Zusammenhang, Tabelle oder Spalten verworfen.Indexes that are automatically created by Azure SQL-DatenbankAzure SQL Database are immediately dropped when related table or columns is dropped.

Alternative – manuelle indexverwaltungAlternative - manual index management

Ohne automatische indexverwaltung, Benutzer manuell Abfragen müssten Sys. dm_db_missing_index_details (Transact-SQL) anzeigen oder verwenden Sie den Bericht Leistungsdashboard in Management StudioManagement Studio Indizes suchen, die möglicherweise die verbessern Sie Leistung, erstellen Sie Indizes, die mithilfe der Informationen in dieser Ansicht und manuell überwachen Sie der Leistung der Abfrage.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 finden, die gelöscht werden sollen, sollten Benutzer operational Nutzungsstatistiken für die die Indizes zu suchen, die nur selten verwendete Indizes überwachen.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 Database vereinfacht diesen Vorgang.simplifies this process. Azure SQL-DatenbankAzure SQL Database die arbeitsauslastung analysiert, werden die Abfragen identifiziert, die mit einem neuen Index schneller ausgeführt werden konnte 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. Suche nach Informationen zur Identifikation von Indizes, die Sie auf Ändern finden Sie im Azure-Portal indexempfehlungen.Find more information about identification of indexes that should be changed at Find index recommendations in Azure portal.

Siehe auchSee 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)
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
Abfrage Optimierung-AssistentQuery Tuning Assistant