sys.dm_db_index_usage_stats (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 das Eindämmen von Datenbanken auswirken oder Informationen zu anderen Datenbanken verfügbar machen, auf die der Benutzer zugreifen kann. Um diese Informationen nicht verfügbar zu machen, wird jede Zeile mit Daten, die nicht zum verbundenen Mandanten gehören, herausgefiltert.

Hinweis

Der 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).For information about memory-optimized index use, see 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.

In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines elastischen Pools eindeutig, aber nicht innerhalb eines logischen Servers.
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 Scans nach Benutzerabfragen, die das Prädikat "seek" nicht verwendet haben.
user_lookups bigint Anzahl von Lesezeichen-Nachschlagevorgängen durch Benutzerabfragen.
user_updates bigint Anzahl von Updates durch Benutzerabfragen. Dazu gehören "Einfügen", "Löschen" und "Aktualisierungen", die anzahl der Vorgänge darstellen, die nicht die tatsächlichen Zeilen betreffen. Wenn Sie beispielsweise 1000 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.

Hinweise

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 Indikator der Standard Tenance für den Index, der durch Einfüge-, Aktualisierungs- oder Löschvorgänge in der zugrunde liegenden Tabelle oder Ansicht 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 Leistungsindikatoren werden bei jedem Start des Datenbankmoduls so initialisiert, dass sie leer sind. 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 für den Index noch keine Zeile vorhanden ist. Beim Hinzufügen der Zeile sind deren Zähler anfänglich auf 0 festgelegt.

Während des Upgrades auf SQL Server 2008 R2 (10.50.x), SQL Server 2012 (11.x) oder SQL Server 2014 (12.x) werden Einträge 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 SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto 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.

Siehe auch

Indexbezogene dynamische Verwaltungsansichten und -funktionen (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