sys.dm_db_index_usage_stats (Transact-SQL)
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Gibt die Anzahl verschiedener Arten von Indexvorgängen und den Zeitpunkt zurück, wann die einzelnen Vorgänge zuletzt ausgeführt wurden.
In Azure SQL Datenbank können dynamische Verwaltungsansichten keine Informationen verfügbar machen, die sich auf die Datenbankeinschluss auswirken, oder Informationen zu anderen Datenbanken, auf die der Benutzer Zugriff hat, verfügbar machen. Um diese Informationen nicht verfügbar zu machen, wird jede Zeile, die Daten enthält, die nicht zum verbundenen Mandanten gehören, herausgefiltert.
Hinweis
Die DMV sys.dm_db_index_usage_stats
gibt keine Informationen zu speicheroptimierten Indizes oder räumlichen Indizes zurück. Informationen zur speicheroptimierten Indexverwendung finden Sie unter sys.dm_db_xtp_index_stats (Transact-SQL).
Hinweis
Um diese Ansicht aus Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie sys.dm_pdw_nodes_db_index_usage_stats
. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
database_id | smallint | ID der Datenbank, für die die Tabelle oder Sicht definiert ist. |
object_id | int | ID der Tabelle oder Sicht, für die der Index definiert ist. |
index_id | int | Die ID des Index. |
user_seeks | bigint | Anzahl von Suchvorgängen durch Benutzerabfragen. |
user_scans | bigint | Anzahl der Überprüfungen durch Benutzerabfragen, die kein Such-Prädikat verwendet haben. |
user_lookups | bigint | Anzahl von Lesezeichen-Nachschlagevorgängen durch Benutzerabfragen. |
user_updates | bigint | Anzahl von Updates durch Benutzerabfragen. Dies umfasst Einfügen, Löschen und Aktualisierungen, die die Anzahl von Vorgängen darstellen, die nicht die tatsächlich betroffenen Zeilen ausführen. Wenn Sie beispielsweise 1.000 Zeilen in einer Anweisung löschen, erhöht sich diese Anzahl um 1. |
last_user_seek | datetime | Zeitpunkt des letzten Suchvorgangs durch den Benutzer |
last_user_scan | datetime | Zeitpunkt des letzten Scanvorgangs durch den Benutzer |
last_user_lookup | datetime | Zeitpunkt des letzten Nachschlagevorgangs durch den Benutzer. |
last_user_update | datetime | Zeitpunkt des letzten Updates durch den Benutzer. |
system_seeks | bigint | Anzahl von Suchvorgängen durch Systemabfragen. |
system_scans | bigint | Anzahl von Scanvorgängen durch Systemabfragen. |
system_lookups | bigint | Anzahl von Nachschlagevorgängen durch Systemabfragen. |
system_updates | bigint | Anzahl von Updates durch Systemabfragen. |
last_system_seek | datetime | Zeitpunkt des letzten Systemsuchvorgangs. |
last_system_scan | datetime | Zeitpunkt des letzten Systemscanvorgangs. |
last_system_lookup | datetime | Zeitpunkt des letzten Systemnachschlagevorgangs. |
last_system_update | datetime | Zeitpunkt des letzten Systemupdates. |
pdw_node_id | int | Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW) Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet. |
Bemerkungen
Jeder einzelne Such-, Scan-, Nachschlage- oder Updatevorgang für den angegebenen Index durch eine Abfrageausführung zählt als Verwendung dieses Indexes, und der entsprechende Zähler in dieser Sicht wird inkrementiert. Informationen werden für Vorgänge angezeigt, die durch Benutzerabfragen verursacht werden, und für Vorgänge, die durch intern generierte Abfragen verursacht werden, wie z. B. Scans zum Sammeln von Statistikdaten.
Die user_updates
Spalte ist ein Wartungsindikator für den Index, der durch Einfüge-, Update- oder Löschvorgänge für die zugrunde liegende Tabelle oder Sicht verursacht wird. Mithilfe dieser Sicht können Sie ermitteln, welche Indizes selten von den Anwendungen verwendet werden. Außerdem können Sie mithilfe dieser Sicht bestimmen, welche Indizes einen hohen Wartungsaufwand erzeugen. Sie können Indizes löschen, die einen hohen Wartungsaufwand erzeugen, aber nicht oder nur selten für Abfragen verwendet werden.
Die Indikatoren werden beim Starten der Datenbank-Engine als leer initialisiert. Verwenden Sie die sqlserver_start_time
-Spalte in sys.dm_os_sys_info, um die aktuellste Startzeit der Datenbank-Engine zu suchen. Außerdem werden jedes Mal, wenn eine Datenbank getrennt oder beendet wird (beispielsweise, weil AUTO_CLOSE auf ON festgelegt ist), alle dieser Datenbank zugehörigen Zeilen entfernt.
Wenn ein Index verwendet wird, wird eine Zeile hinzugefügt sys.dm_db_index_usage_stats
, wenn noch keine Zeile für den Index vorhanden ist. Beim Hinzufügen der Zeile sind deren Zähler anfänglich auf 0 festgelegt.
Beim Upgrade auf SQL Server 2008 R2 (10.50.x), SQL Server 2012 (11.x) oder SQL Server 2014 (12.x) werden Einträge in sys.dm_db_index_usage_stats
entfernt. Ab SQL Server 2016 (13.x) werden Einträge wie vor SQL Server 2008 R2 (10.50.x) beibehalten.
Berechtigungen
Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE
-Berechtigung erforderlich.
Für Standard-, S0- und S1-Dienstziele von SQL-Datenbank sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators, des Azure Active Directory-Administrators oder die Mitgliedschaft in der ##MS_ServerStateReader##
Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE
-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##
-Serverrolle erforderlich.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
Weitere Informationen
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit dem Index (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)
sys.indexes (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)
Überwachen und Optimieren der Leistung