sys.dm_db_index_usage_stats (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

Restituisce i conteggi di diversi tipi di operazioni relative agli indici e l'ora dell'ultima esecuzione di ogni tipo di operazione.

Nel database SQL di Azure, le viste a gestione dinamica non possono esporre le informazioni che influenzerebbero l'indipendenza del database o le informazioni sugli altri database a cui l'utente dispone di accesso. Per evitare di esporre queste informazioni, ogni riga contenente dati che non appartengono al tenant connesso viene filtrata.

Nota

La DMV sys.dm_db_index_usage_stats non restituisce informazioni sugli indici ottimizzati per la memoria o sugli indici spaziali. Per informazioni sull'uso dell'indice ottimizzato per la memoria, vedere sys.dm_db_xtp_index_stats (Transact-SQL).

Nota

Per chiamare questa visualizzazione da Azure Synapse Analytics o da Platform System (PDW), usare sys.dm_pdw_nodes_db_index_usage_stats. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Nome colonna Tipo di dati Descrizione
database_id smallint ID del database in cui è definita la tabella o la vista.

In database SQL di Azure i valori sono univoci all'interno di un database singolo o di un pool elastico, ma non all'interno di un server logico.
object_id int ID della tabella o della vista in cui è definito l'indice.
index_id int ID dell'indice.
user_seeks bigint Numero di operazioni Seek dovute a query utente.
user_scans bigint Numero di analisi in base alle query utente che non hanno usato il predicato 'seek'.
user_lookups bigint Numero di ricerche tramite segnalibro eseguite da query utente.
user_updates bigint Numero di aggiornamenti dovuti a query utente. Sono inclusi inserimento, eliminazione e aggiornamenti che rappresentano il numero di operazioni eseguite non interessate dalle righe effettive. Ad esempio, se si eliminano 1000 righe in un'istruzione, questo conteggio aumenta di 1
last_user_seek datetime Ora dell'ultima operazione Seek utente.
last_user_scan datetime Ora dell'ultima analisi utente.
last_user_lookup datetime Ora dell'ultima ricerca utente.
last_user_update datetime Ora dell'ultimo aggiornamento utente.
system_seeks bigint Numero di operazioni Seek dovute a query di sistema.
system_scans bigint Numero di analisi dovute a query di sistema.
system_lookups bigint Numero di ricerche dovute a query di sistema.
system_updates bigint Numero di aggiornamenti dovuti a query di sistema.
last_system_seek datetime Ora dell'ultima operazione Seek di sistema.
last_system_scan datetime Ora dell'ultima analisi di sistema.
last_system_lookup datetime Ora dell'ultima ricerca di sistema.
last_system_update datetime Ora dell'ultimo aggiornamento di sistema.
pdw_node_id int Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW)

Identificatore del nodo in cui è attiva la distribuzione.

Osservazioni:

Ogni operazione Seek, analisi, ricerca o aggiornamento individuale sull'indice specificato, eseguita da una query, viene conteggiata come un utilizzo dell'indice e incrementa il contatore corrispondente in questa vista. Le informazioni vengono restituite sia per le operazioni causate dalle query eseguite dall'utente che per le operazioni causate dalle query generate internamente, ad esempio le analisi per la raccolta di statistiche.

La user_updates colonna è un contatore della manutenzione sull'indice causato da operazioni di inserimento, aggiornamento o eliminazione nella tabella o nella vista sottostante. È possibile utilizzare questa vista per determinare gli indici scarsamente utilizzati dalle applicazioni. È anche possibile utilizzare la vista per determinare quali indici sono sottoposti a un overhead di manutenzione. Potrebbe essere opportuno rimuovere gli indici che comportano un overhead di manutenzione e che non sono utilizzati, o sono utilizzati solo raramente, per le query.

I contatori vengono inizializzati in modo vuoto ogni volta che viene avviato il motore di database. Usare la colonna sqlserver_start_time in sys.dm_os_sys_info per trovare l'ora di avvio dell'ultimo motore di database. Inoltre, ogni volta che un database viene scollegato o arrestato (perché, ad esempio, AUTO_CLOSE è impostato su ON), tutte le righe associate al database vengono rimosse.

Quando si utilizza un indice, viene aggiunta una riga a sys.dm_db_index_usage_stats se non esiste già una riga per l'indice. All'aggiunta della riga, i contatori corrispondenti vengono inizialmente impostati su zero.

Durante l'aggiornamento a SQL Server 2008 R2 (10.50.x), SQL Server 2012 (11.x) o SQL Server 2014 (12.x), le voci in sys.dm_db_index_usage_stats vengono rimosse. A partire da SQL Server 2016 (13.x), le voci vengono mantenute come prima di SQL Server 2008 R2 (10.50.x).

Autorizzazioni

In SQL Server e Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE.

In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader## server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'adesione ruolo del server ##MS_ServerStateReader##.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.

Vedi anche

Funzioni e viste a gestione dinamica correlate all'indice (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)
Monitoraggio e ottimizzazione delle prestazioni