Comment puis-je surveiller et de trouver des index inutilisés dans la base de données sql
Je tiens à surveiller l'utilisation des index pour une base de données sql, afin de trouver des index inutilisés et de les en exclure. Comment puis-je surveiller l'utilisation des index le plus efficacement? Et les scripts qui pourraient être utiles?
(Je suis au courant de cette question porte sur l'identification des objets inutilisés, mais cela s'applique uniquement à l'exécution de sql server. Je tiens à surveiller l'utilisation des index sur une période de temps...)
OriginalL'auteur Ole Lynge | 2009-09-21
Vous devez vous connecter pour publier un commentaire.
Actuellement (SQL Server 2005 - 2008) l'index SQL stats informations ne sont conservées en mémoire et donc, vous avez à faire le travail vous-même si vous voulez avoir de la qui a persisté à travers redémarre et se détache de la base de données.
Ce que je fais habituellement, c'est que je créer une tâche qui s'exécute tous les jours et prend un instantané de l'information trouvée dans le
sys.dm_db_index_usage_stats
table, dans un tableau personnalisé que j'ai créer pour la base de données en question.Cela semble fonctionner assez bien jusqu'à ce qu'une future version de SQL qui sera le soutien persistant de l'indice de statistiques d'utilisation.
OriginalL'auteur Mike Dinescu
C'est une question intéressante. J'ai travaillé sur cette même question au cours de la dernière semaine. Il y a un système de table appelée dm_db_index_usage_stats qui contient l'utilisation de statistiques sur les index.
Indices Qui n'Apparaissent Jamais dans les Statistiques d'Utilisation de la Table de
Cependant, de nombreux indices n'apparaissent pas dans ce tableau. La requête de David Andres posté listes de tous les indices de cette affaire. J'ai mis à jour un petit peu d'ignorer les clés primaires, qui ne devrait probablement pas être supprimé, même si elles ne sont pas toujours utilisés. J'ai aussi rejoint sur le dm_db_index_physical_stats table pour obtenir d'autres informations, y compris le nombre de pages, le Total de la Taille de l'Index, et le Pourcentage de Fragmentation. Une note intéressante est que les index qui sont retournés par cette requête ne semblent pas apparaître dans le Rapport SQL pour l'Indice des Statistiques d'Utilisation.
Indices Qui Apparaissent dans les Statistiques d'Utilisation de la Table, Mais ne Sont Jamais Utilisés
Il y a d'autres indices qui apparaissent dans le dm_db_index_usage_stats table, mais qui n'ont jamais été utilisés pour l'utilisateur cherche, des analyses, ou des recherches. Cette requête permettra d'identifier les indices qui tombent dans cette catégorie. D'ailleurs, contrairement à l'index retourné à partir d'une autre requête, l'index de retour dans cette requête peut être vérifié sur le Rapport SQL par l'Indice des Statistiques d'Utilisation.
J'ai ajouté un nombre de pages Minimum, ce qui me permet d'abord de se concentrer sur et supprimer les indices qui prennent beaucoup d'espace de rangement.
J'espère que cette aide.
Dernière Pensée
Bien sûr, une fois que les indices sont identifiés comme candidats pour l'enlèvement, un examen attentif doit toujours être employé pour s'assurer que c'est une bonne décision de le faire.
Pour plus d'informations, voir L'identification des Index Inutilisés dans une Base de données SQL Server
OriginalL'auteur Narnian
Tiré ce chiot hors de http://blog.sqlauthority.com/2008/02/11/sql-server-2005-find-unused-indexes-of-current-database/. Notez que cela fonctionne pour 2005 et au-dessus. La clé est la
JOIN
à laSYS.DM_DB_INDEX_USAGE_STATS
système de de table.OriginalL'auteur David Andres
J'ai modifié Jean Pasquet interrogations ici: L'identification des Index Inutilisés dans une Base de données SQL Server de retour indices de 10 ou moins de temps, réunies les résultats qui ne sont pas dans les statistiques d'utilisation des tables, exclure des tas d'indices et les contraintes unique ou de clé primaire index, et enfin d'exclure les index avec zéro pages.
Être prudent avec les résultats de cette requête, il est préférable d'utiliser dans la production où les indices sont réellement utilisées de la façon dont vous vous attendez. Si vous effectuez une requête sur une base de données avec reconstruit ou abandonné/recréé indices ou sur une récente sauvegarde de base de données, vous pourriez obtenir de faux positifs (indices qui, normalement, devait s'habituer, mais ne sont pas en raison de circonstances spéciales). Pas sûr à utiliser lors du test ou de dev environnements de décider de supprimer les index. Comme Narnian dit, cette requête permettent seulement d'identifier les candidats pour l'enlèvement de votre examen attentif.
OriginalL'auteur HAL9000
Vous devriez jeter un oeil à Brent Ozars sp_BlitzIndex. Cette procédure stockée listes entre autres unsused index. Il répertorie les troubles dans un rapport. Pour chaque entrée, une URL est donnée qui explique ce qu'il faut chercher et comment gérer le problème.
OriginalL'auteur TaXXoR