Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

DMV: Index Usage

19. Dezember 2008 , Geschrieben von Olaf Helper Veröffentlicht in #T-SQL

Eine der guten Neuerungen im MS SQL 2005 (ja, ich weiß, es gibt schon den 2008 … wir hinken etwas hinterher ), sind die DMV = Dynamic Management Views (Dynamische Verwaltungssichten), die im Schema sys jeder Datenbank liegen.

Sie erlauben einen, Statusinformation des Servers abzurufen und so auch frühzeitig Probleme und Schwachstellen zu erkennen.

Nach der Migration auf SQL2005 beobachte ich als erstes die Ergebnisse aus dem DMV zu den Indexstatistiken. Wie ich hier selektiere und vorgehen, will ich ab und an hier mal vorstellen.  

Die erste DMV ist sys.dm_db_index_usage_stats, hier wird vermerkt, welcher Index wie häufig verwendet wurde.  

Hier mal mein SQL Statement zur Selektion:  

 SELECT SCH.name as SchemaName, OBJ.name AS TableName, 
   IDX.name AS IndexName, IDX.type_desc AS IndexType, 
   IUS.user_scans, IUS.last_user_scan, 
   IUS.user_seeks, IUS.last_user_seek, 
   IUS.system_scans, IUS.last_system_scan, 
   IUS.system_seeks, IUS.last_system_seek 
 FROM sys.dm_db_index_usage_stats AS IUS 
   INNER JOIN sys.indexes AS IDX 
   ON IUS.index_id = IDX.index_id 
   AND IUS.object_id = IDX.object_id 
   INNER JOIN sys.objects AS OBJ 
   ON IDX.object_id = OBJ.object_id 
   INNER JOIN sys.schemas AS SCH 
   ON OBJ.schema_id = SCH.schema_id 
 WHERE IUS.database_id = DB_ID()  -- Nur aktuelle DB betrachten 
   AND IDX.type > 0  -- Keine Heaps 
   AND OBJ.type = 'U'  -- Nur Userobjekte 
   AND (IUS.user_scans + IUS.user_seeks 
   + IUS.system_scans + IUS.system_seeks) > 0 
   -- Min. einmal verwendet 
 ORDER BY (IUS.user_scans + IUS.user_seeks 
   + IUS.system_scans + IUS.system_seeks) DESC, 
   IUS.last_user_scan DESC, IUS.last_user_seek DESC 

 

Im Umkehrschluss gilt übrigens, dass Indizes, die nicht in der Statistik erscheinen, nicht verwendet werden und somit im Laufe der Zeit weg können; sie verringern nur den Schreibzugriff.

Dazu später mehr.  

Übrigens, um das Script ausführen zu dürfen, braucht man min. die Berechtigung VIEW SERVER STATE.

Diesen Post teilen

Repost 0

Kommentiere diesen Post