Published on

April 24, 2011

Stratégie de gestion des index SQL Server

La gestion des index est un aspect crucial de la gestion de base de données et de l’optimisation des performances. Elle consiste à optimiser les index d’une base de données pour améliorer les performances des requêtes. Bien qu’il existe de nombreux articles et scripts disponibles sur la gestion des index, il est important d’avoir une stratégie complète qui couvre tous les aspects de la gestion des index.

Après avoir effectué des recherches approfondies, j’ai identifié quatre exigences essentielles pour une stratégie de gestion des index efficace :

  1. Reconstruction des index utilisés
  2. Filtrage des index inutilisés
  3. Création des index manquants
  4. Intervention minimale de l’utilisateur

Plongeons maintenant dans chacune de ces étapes en détail.

Étape 1 : Reconstruction des index utilisés

La première étape de la stratégie de gestion des index consiste à identifier et reconstruire les index utilisés. Pour déterminer les index utilisés, nous pouvons utiliser la DMV (Dynamic Management View) sys.dm_db_index_usage_stats. Cette DMV fournit des informations sur l’utilisation des index dans une base de données.

Nous pouvons créer une table, tblIndexUsageInfo, pour stocker les statistiques pertinentes de la DMV sys.dm_db_index_usage_stats. Cette table inclura des informations telles que le nom de la base de données, le nom de la table, le nom de l’index, l’utilisation de l’index, la taille de l’index, et plus encore.

Une fois que nous avons les informations sur les index utilisés, nous pouvons procéder à leur reconstruction à l’aide d’une procédure stockée. La procédure stockée proc_RebuildSelectedIndexes analysera la fragmentation moyenne de chaque index et décidera de réorganiser ou de reconstruire l’index en fonction d’un seuil prédéfini.

Étape 2 : Filtrage des index inutilisés

Dans cette étape, nous identifierons et filtrerons les index inutilisés. Les index inutilisés peuvent avoir un impact négatif sur les performances d’une base de données, il est donc important de les identifier et de les supprimer.

Nous pouvons filtrer les index inutilisés en fonction de deux critères :

  1. Les index qui n’existent pas dans la DMV sys.dm_db_index_usage_stats
  2. Les index avec une faible utilisation ou un faible ratio d’utilisation par rapport à la taille

Nous pouvons créer une table, tblUnusedIndexes, pour stocker les informations sur les index inutilisés. Cette table inclura des détails tels que le nom du schéma, le nom de la table, le nom de l’index, l’utilisation de l’index, la taille de l’index, et une requête de suppression pour supprimer l’index.

Une procédure stockée, proc_DropUnusedIndex, peut être utilisée pour supprimer les index inutilisés en fonction des informations stockées dans la table tblUnusedIndexes.

Étape 3 : Création des index manquants

Dans cette étape, nous identifierons et créerons les index manquants. Les index manquants sont des index qui peuvent améliorer considérablement les performances des requêtes mais qui ne sont pas présents dans la base de données.

Nous pouvons utiliser les DMV sys.dm_db_missing_index_details, sys.dm_db_missing_index_group_stats et sys.dm_db_missing_index_groups pour trouver les index manquants et leur importance.

Nous pouvons créer une table, tblMissingIndexes, pour stocker les informations sur les index manquants. Cette table inclura des détails tels que le nom de la base de données, le nom de la table, l’importance et l’instruction de création d’index pour chaque index manquant.

Une procédure stockée, proc_CreateMissingIndexes, peut être utilisée pour créer les index manquants en fonction des informations stockées dans la table tblMissingIndexes.

Étape 4 : Intervention minimale de l’utilisateur

Pour minimiser l’intervention de l’utilisateur, nous pouvons automatiser la stratégie de gestion des index en créant un job qui exécute les procédures stockées nécessaires à intervalles réguliers.

Le job peut être planifié pour s’exécuter pendant les heures creuses, comme les week-ends, afin de minimiser l’impact sur les performances de la base de données. Les résultats de chaque étape peuvent être enregistrés dans des tables respectives pour une analyse ultérieure.

En mettant en œuvre cette stratégie de gestion des index, nous pouvons nous assurer que les index utilisés sont optimisés, les index inutilisés sont supprimés, les index manquants sont créés et l’intervention de l’utilisateur est minimisée.

En conclusion, une stratégie de gestion des index efficace est essentielle pour maintenir des performances optimales de la base de données. En suivant les étapes décrites dans cet article, vous pouvez améliorer les performances de votre base de données SQL Server et garantir une exécution efficace des requêtes.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.