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