Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Brent Ozar explique la fragmentation interne et externe de SQL Server

Selon Microsoft SQL Master, Brent Ozar, il a pris de terribles décisions de réglage des performances de la base de données tout au long de sa carrière. Heureusement pour nous, nous pouvons profiter de ses erreurs et ne pas avoir à tout comprendre par nous-mêmes. Il a partagé gratuitement sa sagesse durement acquise lors de la série de webcasts Quest's Database Training Days.

Dans l'une de ses sessions, nous avons appris "Pourquoi la défragmentation de vos index n'aide pas". En fait, cela pourrait aggraver les performances de votre base de données, et Brent nous a expliqué pourquoi. En cours de route, il a souligné l'importance de savoir ce que vous mesurez lorsqu'il s'agit d'optimiser les performances de SQL Server.

Fragmentation interne ou externe

Brent nous a donné un rapide tutoriel sur la façon dont SQL Server stocke les données dans des «pages» de 8 Ko. Dans un index nouveau ou reconstruit, les pages sont toutes pleines et stockées dans l'ordre. Mais, à mesure que de nouvelles données sont ajoutées, les pages se divisent :toutes les pages ne sont pas pleines et elles se produisent dans le désordre. C'est la différence essentielle entre la fragmentation interne et externe :

  • Fragmentation externe :fait référence aux pages en panne
  • Fragmentation interne :fait référence à l'espace vide sur une page

Se concentrer moins sur les fractionnements de page

De nombreux professionnels des bases de données se concentrent sur les fractionnements de page comme mesure de la fragmentation de la base de données, cependant, Brent a expliqué que ce nombre n'a pas de sens car les fractionnements de page se produisent à la fois lors de l'ajout d'une nouvelle ligne à une table vide et lors de l'ajout d'une nouvelle page. Donc, ce n'est pas utile après tout.

Comment la fragmentation externe peut aggraver les choses

Au cours de cette session, Brent a affirmé que la fragmentation externe n'est pas une mesure utile des performances de la base de données, car l'ordre des pages n'a pas beaucoup d'impact sur la vitesse des tâches de maintenance, l'exécution de requêtes dans la RAM ou la lecture de données à partir du disque. Ainsi, les professionnels des bases de données qui tentent de corriger la fragmentation externe en réorganisant et en reconstruisant les index aggravent en fait les performances en gonflant les sauvegardes et en utilisant plus de temps de fenêtre de maintenance.

Les professionnels des bases de données qui tentent de réduire la fragmentation externe en laissant de la place sur les pages en définissant un facteur de remplissage causent également un problème pire que celui qu'ils tentent de résoudre. C'est en grande partie parce que vous n'avez presque jamais besoin d'insérer des données à mi-chemin dans l'index. Ainsi, essayer de maintenir l'ordre des pages en plaçant moins de données sur chaque page individuelle entraîne en fait une fragmentation interne.

Surveillance du temps d'attente

Que devriez-vous faire à la place ? Brent conseille de définir le facteur de remplissage sur la valeur par défaut de 100 % (ou au moins 80 % ou plus), puis de reconstruire les index pour les compresser à nouveau. Ensuite, concentrez-vous sur la surveillance du bon numéro de réglage des performances - le temps d'attente. L'un des meilleurs moyens d'afficher divers aspects du temps d'attente dans vos instances de base de données consiste à utiliser un outil de surveillance des performances pour identifier exactement où les processus s'enlisent.

Pour en savoir plus sur les informations de Brent sur la fragmentation de l'index, les statistiques sur les temps d'attente et ce que vous devriez faire concernant la maintenance de l'index, écoutez le webcast à la demande.

Vous pouvez également accéder à des conseils d'experts sur les performances des bases de données grâce aux Journées de formation aux bases de données de Quest.