Je surveille la croissance des fichiers via le collecteur de données dans SQL Server 2008 R2 depuis deux semaines. La base de données croît régulièrement à environ 35 (Mo) / jour. La base de données n'a pas encore atteint la taille initiale de 2 Go.
La croissance automatique des fichiers DB est définie sur 5 Mo et je voudrais essayer une approche différente, donc je recherche des suggestions et / ou des commentaires.
Il y a une tâche de réglage qui s'exécute chaque semaine le dimanche soir à 1h30. La tâche:
- Vérifier l'intégrité de la base de données
- Rétrécir le fichier journal - (c'est correct car le mode de journalisation est simple)
- Réduire la base de données
- Réorganiser l'index
- Reconstruire l'index
- Mettre à jour les statistiques
- Historique de nettoyage
Je voudrais ajouter deux étapes supplémentaires au plan de réglage hebdomadaire:
- Augmentez le fichier de base de données de 500 Mo si l'espace utilisé atteint un certain seuil ou une taille totale.
- Augmentez le fichier journal de 250 Mo (après la réduction) si l'espace utilisé atteint un certain seuil de taille totale.
En plaçant le fardeau de la croissance en heures hors ligne, j'espère gagner en performances en réduisant le nombre d'événements de croissance automatique lors de charges lourdes.
J'ai deux questions concernant les fichiers à croissance automatique.
- Le meilleur endroit pour placer les étapes de croissance du fichier serait avant les étapes actuelles ou après?
- Si j'utilise le
ALTER DATABASE|MODIFY FILE
pour agrandir le fichier, comment puis-je déterminer siSpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)
?
Réponses:
Vous devriez viser à croître automatiquement le moins possible. Sept fois par jour est atroce, même avec une initialisation instantanée des fichiers.
Ne faites pas de base de données Shrink. Déjà. Shrinkfile, peut-être, mais seulement après un événement extraordinaire. Le rétrécir juste pour grandir à nouveau est un exercice futile et devrait en fait être appelé auto-fragment.
Si le modèle de récupération est simple, il n'y a aucun moyen sur terre de développer votre fichier journal de 250 Go. L'espace utilisé dans le fichier se nettoiera automatiquement au fil du temps, à moins que vous n'ayez démarré une transaction il y a un mois et que vous n'ayez aucune intention de la valider ou de l'annuler.
Mon conseil serait donc:
Augmentez automatiquement le fichier de données manuellement pendant une période silencieuse à une taille qui pourra accueillir plusieurs mois de croissance. Pour quoi l'économisez-vous en attendant?
Définissez l'incrément de croissance automatique pour le fichier de données sur quelque chose de relativement petit (afin qu'il n'interrompe pas les utilisateurs lorsqu'il se produit), et alertez-le sur cet événement (vous pouvez l'attraper dans la trace par défaut, par exemple, ou via une extension événements). Cela peut vous dire que vous atteignez le point haut que vous avez estimé et qu'il est temps de croître à nouveau manuellement. À ce stade, vous souhaiterez conserver ce manuel au cas où vous souhaiteriez ajouter un nouveau fichier / groupe de fichiers sur un lecteur différent pour accueillir l'espace, car vous finirez par remplir le lecteur actuel.
Faites croître automatiquement le fichier journal pour, disons, le double de son volume. Il ne devrait pas croître davantage à moins qu'il n'y ait une transaction anormale bloquant les choses. Vous devez également surveiller cet événement afin de les connaître.
la source
La croissance automatique est quelque chose que vous devriez essayer d'éviter si possible. Le problème est que vous n'avez aucun contrôle sur le moment où la croissance peut se produire et que votre système peut en pâtir sérieusement.
Définissez la taille de votre fichier sur quelque chose de raisonnable pendant un mois environ et surveillez votre taux de croissance à partir de là, déterminez combien d'espace vous estimez pour X quantité de temps et définissez votre taille à cela + une marge d'erreur.
J'ai mis en place un travail de surveillance simple qui m'alerte lorsque la taille du fichier atteint un maximum prédéfini avant la croissance automatique. Vous pouvez utiliser quelque chose comme ceci:
Cela pourrait bien sûr être programmé comme un travail.
la source