Le informazioni in sys.dm_db_index_usage_stats sono affidabili?


8

Sto archiviando i dati da un vecchio sistema che non ha documentazione. Fortunato me...

Vorrei sapere quando sono state create le ultime tabelle, cui è stato effettuato l'ultimo accesso, ecc. Posso fidarmi che questa query mi darà la risposta corretta o ci sono alcuni parametri che devo prima verificare? SQL Server 2008 R2:

 SELECT t.Name AS Tabelname, p.rows AS NoOfRows, MAX(us.last_user_lookup) AS LastUsed, t.create_date AS CreatedDate
FROM sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
LEFT JOIN --A lot of the tables did not have any records in this table
    sys.dm_db_index_usage_stats as us ON t.OBJECT_ID = us.OBJECT_ID
GROUP BY t.Name, p.rows, create_date
ORDER BY MAX(us.last_user_lookup) DESC

Risposte:


15

No.

La sys.dm_db_index_usage_statvista riflette solo, nella migliore delle ipotesi, i dati dall'ultimo avvio del database (ultimo avvio dell'istanza o l'ultima volta che il DB è stato portato in linea). Inoltre, le voci possono essere cancellate sotto pressione della memoria. Fornirà positivi accurati (se una tabella ha statistiche diverse da zero, allora viene usata)) ma può dare falsi negativi (0 l'utilizzo nelle statistiche potrebbe non riflettere l'uso effettivo). Inoltre ci sono molti sistemi che usano determinate tabelle solo una volta alla settimana, una volta al mese o anche una volta all'anno.


3

Ecco un'altra ragione per cui non puoi fare affidamento ciecamente su DMV sys.dm_index_usage_stats. sys.dm_db_index_usage_stats non viene aggiornato dopo che un indice viene utilizzato solo per le statistiche associate alle colonne indicizzate. Paul lo ha mostrato nel suo link.

Cosa non ti dice sys.dm_index_usage_stats DMV

Ti piacerebbe anche leggere

Questo articolo sulle statistiche di utilizzo dell'indice DMV

Inoltre, IMO non penso che usando DMV ci sia un modo PERFETTO per scoprire quando è stato usato l'ultima tabella. Credo che usare la traccia di Profiler o la traccia di eventi estesa sarebbe un'opzione migliore. Sebbene il profiler possa causare il carico, ma la traccia lato server è una buona opzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.