La maintenance et la surveillance continues des bases de données sont les éléments clés à prendre en compte pour le bon fonctionnement d'un système SQL. Lorsqu'une base de données est créée et remplie, les données sont initialement placées dans un emplacement physique contigu (si suffisamment d'espace physique contigu est disponible). Ainsi, dans ce cas, l’ordre logique et l’ordre physique des données sont susceptibles d’être similaires, ce qui augmente les performances.
Lorsque les données sont modifiées, supprimées ou mises à jour, les index pertinents sont également mis à jour automatiquement pour refléter ces modifications. En conséquence, les index sont fragmentés et les informations dispersées dans l'espace de stockage. Cela modifie l'ordre physique des données (car elles perdent l'allocation contiguë) et la récupération prend du temps, ce qui ralentit les performances de la base de données.
La solution à ce problème consiste à effectuer une défragmentation périodique. La défragmentation reconstruit ou réorganise les index pour faire correspondre l'ordre logique des données avec l'ordre physique. Avant d'effectuer toute opération de défragmentation, tous les index doivent être correctement analysés. Les résultats de l'analyse déterminent si une réorganisation ou une reconstruction est nécessaire.
Les deux principales opérations effectuées par le processus de défragmentation sont :
- Réorganisation de l'index – La réorganisation de l'index est effectuée lorsque la fragmentation est à un faible niveau et que les performances ne sont pas gravement affectées. Ce processus effectue en fait la réorganisation physique des pages au niveau feuille pour correspondre à l'ordre logique. Il ne crée aucune nouvelle page ; il réorganise uniquement les pages existantes. La réorganisation peut être effectuée lorsque le système est en ligne sans bloquer les opérations normales de la base de données.
- Reconstruction de l'index – Le processus de reconstruction de l'index est effectué lorsque la fragmentation est à un niveau plus profond et que les performances sont trop lentes. Dans ce processus, l'index d'origine est supprimé et un nouvel index est créé. Ainsi, l'ordre physique et logique est ramené à ses positions d'origine et les performances s'améliorent considérablement. La reconstruction peut également créer de nouvelles pages selon les besoins et peut être effectuée en mode hors ligne ou en ligne.
Par conséquent, la défragmentation doit faire partie du processus de maintenance de SQL Server et doit être prise au sérieux. Un plan d'analyse des requêtes approprié doit être construit et suivi. En fonction du résultat de l'analyse des requêtes, une reconstruction ou une réorganisation des index doit être effectuée. En bref, la défragmentation est essentielle pour améliorer les performances des systèmes SQL.