Mardi 27 janvier 2009
2
27
/01
/2009
15:50
Bonjour,
Lorsqu'une application a un peu de vécu, il arrive que l'on se demande si tel index est utilisé ou pas.
En effet la présence d'un index a un impact sur :
- La taille de la base
- Les performance lors d'opération d'INSER, UPDATE , ou DELETE puisqu'il faut au passage mettre à jour les indexes.
Donc si un index n'est pas utilisé, il n'a aucune raison d'exister. Sauf si on aime a penser que peut etre un jour il sera utilisé.
Admettons que vous aillez un doute sur l'utilisation d'un index que l'on appellera "mon_index". Il va suffir de le monitorer et de voir si il est utilisé.
ALTER INDEX mon_index MONITORING USAGE;
Il suffit ensuite d'interroger la vue v$object_usage pour savoir si l'index a été utilisé.
Dans cette vue nous avons les colonnes suivante:
- Index_Name
- Table_Name
- Monitoring
- USED
- Start_Monitoring
- End_Monitoring
Si l'index a été utilisé, alors la colonne USED prends la valeur YES.
Une fois que l'on pense avoir sa réponse, ou que l'on estime que l'on est passé dans toutes les requetes pouvant potentiellement utiliser cet index, on peut alors stopper le monitoring.
ALTER INDEX mon_index NOMONITORING;
Remarque: Une fois qu'un index a été monitoré, la trace est conservée dans la vue v$object_usage (d'ou l'interet de la colonne
End_Monitoring).
Attention : La méthode décrite ici, indique seulement qu'un index n'a pas été utilisé. Cela ne permet pas de conclure que l'index est inutile. Cela peut
permettre par exemple de mettre en evidence que les stats ne sont pas à jour, ou que les paramètres de base sont mal initialisés.....
Re Attention : L'utilisation de ce type de monitoring doit également est effectué avec quelqu'un qui maitrise le fonctionnel. En effet, si vous décidez
de supprimer un index car non utilisé sur plusieurs mois et que manque de pot,il était utile sur un traitement annuel, vous pouvez plombez les performances. "Sans controle, la puissance n'est
rien..."
LAO.