web-dev-qa-db-fra.com

Existe-t-il des avantages pour défragmenter les index SQL dans un fichier SAN?

Notre serveur SQL vit sur un SAN. Il contient des dizaines de OLTP Bases de données, certaines avec plusieurs tableaux contenant plus de 1 m d'enregistrements.

Nous sommes en cours d'exécution Scripts d'entretien d'index de OLA Hallengren hebdomadaire et il court pendant plusieurs heures à chaque fois. Basé sur le seuil de fragmentation, le script sera réorganisé ou réindex un indice. Nous avons observé que lors de la réindexage, les fichiers journaux deviennent énormes, ce qui conduit à une consommation excessive de bande passante lors de l'expédition de journal.

Ensuite, vient n article de Brent Ozar dans lequel il dit d'arrêter de s'inquiéter des index SQL :

Vos lecteurs durs sont partagés avec d'autres serveurs qui font également des demandes de conduite en même temps. Les lecteurs sauteront donc toujours partout pour obtenir des données. La défragmentation de vos index est que des travaux occupés sans signification.

Googling Cette question conduit à des opinions variables, la plus soutenu avec des arguments qui semblent trop brefs ou faibles. Notre plan provisoire consiste à ajuster le seuil de fragmentation dans notre script de maintenance afin de se réorganiser beaucoup plus souvent que de réindexes.

Quel est le dernier verdict? Est-il utile de défragmenter les index SQL sur a SAN = compte tenu des charges associées à des travaux de maintenance hebdomadaires exécutants?

16
dev_etter

Les stratégies de défragmentation aident à améliorer Numérisation Vitesse to/depuis Disque .

La grande variété d'opinions est que la stratégie de défragmentation idéale d'un environnement devrait dépendre de nombreux facteurs différents. Il y a aussi plusieurs couches potentielles de fragmentation en jeu.

Dire que vos bases de données sont stockées sur un SAN pas suffisamment d'informations. Par exemple:

  • Les fichiers de base de données sont-ils stockés sur des groupes de raid physiques distincts ou du même groupe RAID? Quels autres processus sont actifs sur ce même dispositif? Vos fichiers de sauvegarde se terminent-ils aussi? Vous devrez peut-être demander votre SAN admin pour ces informations, car ce n'est pas toujours transparent.

  • Quels sont les modèles d'accès pour les bases de données? OLTP est généralement un accès aléatoire, mais parfois une application est heureuse et vous ne pouvez pas modifier son comportement (Application ISV). Les applications sont-elles surtout, écrivant-la plupart du temps, ou quelque part entre les deux?

  • Existe-t-il SLA de performance en jeu pendant une période de récupération/basculement ?

Le poste de Brent suppose qu'il y a une piscine géante de stockage et tout l'entère. Cela signifie que les disques physiques sont rarement inactifs et, partant, la plupart des accès sont aléatoires. Si tel est votre situation, alors le conseil s'applique, et je suis d'accord avec cela pour la plupart. Bien que ce type de stratégie soit beaucoup plus facile à gérer, ce n'est pas nécessairement (a) ce que vous avez dans votre environnement ou (b) quelle est la meilleure solution pour votre environnement.

Si la maintenance de l'indice est lourd, envisagez de le faire moins de manière agressive et/ou amortiez le coût au cours de la semaine (c'est-à-dire exécuter une maintenance de la lumière une fois/jour, au lieu d'une maintenance lourde une fois par semaine).

Vous pouvez également activer l'option SortInTempdb pour réduire potentiellement la quantité de journalisation effectuée dans les bases de données utilisateur.

10
Jon Seigel

Idéalement, vous devriez être réorganisé/réindexage pour que les index qui nécessitent une attention particulière, sinon vous gaspillez des ressources et que vous ayez susceptible de causer d'autres problèmes.

Vous devez établir une base de référence de performance et chaque fois que vous apportez des modifications à comparer le changement de performance contre la base de référence pour déterminer si votre changement mérite d'être implémenté.

2
Jimbo