Un client leader dans le transport frigorifique « gelé » par des lenteurs de sa base de données.
Jour 2 : Suppression des index inutilisés
La première étape pour éliminer les points faibles de leur base de données a consisté à identifier les index inutilisés dans leur base SQL Server principale.
Grâce aux statistiques d'utilisation des index intégrées à SQL Server, tous les index inutilisés ont été identifiés.
Étape 1 : Identifier les tables avec des index inutilisés qui ont des écritures élevées
Ces trois index n’ont aucune utilité pour les utilisateurs et sont régulièrement mis à jour par des opérations d'insertion, de mise à jour et de suppression. Pour faire simple, ils génèrent de la charge IO sans rendre les requêtes plus rapides.
1. Besoins de stockage accrus :
Les index consomment de l'espace disque et du cache mémoire. Les index inutilisés consomment de l’espace disque et de la mémoire qui pourraient être utilisé pour d'autres données, ce qui entraîne une utilisation inefficace des ressources.
2. Ralentissement des performances d'écriture: Chaque fois qu'une ligne est insérée, mise à jour ou supprimée, les index de cette table doivent également être mis à jour. Cela augmente les opérations d'E/S et l'utilisation du processeur, ce qui ralentit les performances d'écriture (opérations INSERT, UPDATE, DELETE).
La surcharge engendrée par la maintenance des index est proportionnelle à leur nombre : les index inutilisés entraînent donc une surcharge inutile.
3. Temps de sauvegarde/restauration plus longs :
Les processus de sauvegarde impliquent la copie des données et des index. Un nombre plus élevé d'index entraîne des sauvegardes plus volumineuses et des temps de sauvegarde plus longs.
De même, la restauration à partir d'une sauvegarde prend plus de temps, car la base de données doit restaurer tous les index, y compris ceux inutilisés.
4. Optimisation des requêtes complexes :
L'optimiseur de requêtes SQL Server prend en compte tous les index disponibles lors de la planification de l'exécution d'une requête. Un nombre accru d'index peut accroître l'espace de recherche de l'optimiseur, ce qui peut allonger le temps nécessaire pour trouver le plan d'exécution optimal.
Bien que l'optimiseur soit généralement efficace, les index inutiles ajoutent à la complexité et peuvent parfois conduire à des plans de requête sous-optimaux si l'optimiseur est désorienté par un excès de choix.
5. Utilisation de la mémoire :
Les index sont souvent chargés en mémoire tampon (pool) pour accélérer l'exécution des requêtes. Les index inutilisés peuvent occuper un espace mémoire précieux, réduisant ainsi la quantité disponible pour la mise en cache des données fréquemment consultées et des index utiles.
Cela peut entraîner une augmentation des échanges de pages et des opérations d'E/S, le moteur de base de données tentant de gérer la mémoire disponible, ce qui nuit aux performances.
6. Surcoût de maintenance :
Les index nécessitent une maintenance régulière, comme la reconstruction et la mise à jour des statistiques, pour garantir leur efficacité. Les index inutilisés aggravent cette charge de maintenance sans apporter aucun avantage.
Les tâches de maintenance, comme l'optimisation des tables ou la reconstruction des index, prennent plus de temps lorsqu'il y a davantage d'index à traiter.
Cette information a été transmise au client qui a autorisé la suppression des trois index inutilisés.
Drop Script
And then rollback if these indexes are needed again
Lors de notre prochaine session, nous allons nettoyer les index dupliqués et redondants.
À suivre : J3.