2009-04-05 8 views
3

J'ai exécuté un rapport de défragmentation sur un serveur SQL et le fichier mdf de la base de données est signalé comme fragmenté à 99%. J'ai demandé à un collègue et ils ont dit que cela peut être normal car c'est juste la façon dont ce type de fichier fonctionne en interne.La fragmentation physique du fichier mdf est-elle un problème?

Est-ce un problème et l'exécution d'une défragmentation de disque pour ce fichier améliore les performances de la base de données? C'est pénible car cela demande beaucoup d'espace sur le disque car c'est un gros fichier donc je veux être sûr que c'est nécessaire.

Mise à jour

Une autre question liée de premier plan sur des réponses. Comment une configuration rayée RAID affecterait-elle cela? Si les données sont réparties sur plusieurs disques, la défragmentation serait-elle moins problématique?

+0

Merci! Excellente info Savez-vous quel est le problème? Si le MDF est fragmenté à 99%, la défragmentation donnera une grande amélioration des performances. Il semble que ce sera le cas mais seulement s'il y a des index clusterisés qui sont beaucoup utilisés. – Jimmymcnulty

Répondre

2

La réponse courte est oui une defrag aiderait.

Les index clusterisés essaient d'organiser l'index de sorte que seules les lectures séquentielles soient nécessaires. C'est génial si le .MDF est contigu sur le disque. Pas tellement si le fichier est réparti sur tout le disque.

Même si le SQL alloué dans des blocs de 8 Ko devant déplacer la tête de disque un peu partout entraîne des temps d'accès beaucoup plus lents. Vous voulez vraiment que le fichier soit contigu.

3

Tant que vous avez déterminé que, en fait, vous avez un problème de réponse de base de données, ce serait un bon candidat à l'amélioration. On peut supposer que vous avez au moins déterminé qu'il y a un problème à résoudre, et que c'est dans la base de données. (c'est-à-dire que vous avez testé des requêtes qui sont plus lentes que vous le souhaiteriez, ou vous voyez des verrous, etc.).

Sinon, il commence à ressembler à deviner et à essayer. La mise en cache compense naturellement beaucoup de ceci en fonction de vos modèles de requête.

+0

+1 De moi, le dorfier –

+0

Oui, vu que nous voyons des verrous et des requêtes à exécution lente. Pourriez-vous développer ce que vous voulez dire par la mise en cache compensant, si vous avez un moment de repos, aimerait savoir ce que vous entendez par là. – Jimmymcnulty

+0

La base de données charge les données à partir du disque en mémoire lorsqu'elle interroge et conserve ces données disponibles en mémoire (cache) jusqu'à ce qu'elles aient besoin de l'utiliser à d'autres fins (généralement sur une base FIFO). De nombreux modèles d'utilisation interrogent fréquemment un sous-ensemble de données, il est donc probable qu'il soit déjà chargé. – dkretz

0

Un bon moyen d'éviter cela est de pas compter sur la croissance automatique. Laissez respirer le MDF.