web-dev-qa-db-fra.com

Rencontré la taille de la transaction de croissance inattendue

Nous utilisons SQL Server 2008 R2 Version standard, nous avons créé le plan de maintenance Rebuild Index, Reorganized Index and update Statistic, Prévu tous les jours à 1 heure du matin. Après avoir exécuté ce plan de maintenance, la taille du fichier journal de transaction de la base de données a augmenté de manière anormale. Pour supposer, si le fichier de données primaire est de 7 Go, le fichier de journal de transaction augmente à 55 Go.

Comment réduire la taille du fichier journal de transaction sans processus de réduction (car il est mauvais - augmente la fragmentation - réduit les performances)

L'autre solution jamais recommandée est la sauvegarde du journal de transaction après une sauvegarde complète. Nous avons fait de même et observons aucune modification des tailles de fichiers qu'il montre la même taille que avant que le fichier principal est de 7 Go et que le fichier journal de transaction est de 55 Go.

S'il vous plaît suggérer de moi la meilleure façon de réduire la taille du fichier journal sans aucun effet sur la performance.

5
user35318

Comment réduire la taille du fichier journal de transaction sans processus de réduction (car il est mauvais - augmente la fragmentation - réduit les performances)

Ce n'est pas vrai. Journal Shrink est assez bénigne, vous pensez Données rétrécit . Voir Comment réduire le journal SQL Server Pour une explication Pourquoi il s'agit, comment la réduire et pourquoi est bénigne.

Ma première recommandation est d'utiliser un plan de maintenance d'index intelligent. La reconstruction hyperactive est chère, nuisible et totalement inutile. Beaucoup jureront scripts d'entretien d'index de OLA Hallengren .

Vous devez également rechercher une exploitation forestière minimale. La maintenance de l'indice est un candidat privilégié pour les opérations minimales enregistrées, mais vous devez les utiliser en utilisant le modèle de récupération enregistré en vrac pour votre base de données. Voir Opérations pouvant être minimalement connectées :

Si la base de données est définie sur le modèle de récupération simple ou enregistré en vrac, certaines opérations DDL d'indice sont minimales. Si l'opération est exécutée hors ligne ou en ligne.

8
Remus Rusanu

augmentation de la taille du journal Duing L'opertion comme la reconstruction/la réorganisation/la mise à jour-statistiques est normale en fonction de la taille de données réelle et de la quantité de croissance. Ce que nous pouvons réduire est une uasage inutile du disque en raison de l'incidence incorrecte du plan de maintenance.

Les incistent lisent la follage MSDN Bol Information sincèrement.

Choisir un modèle de récupération pour les opérations d'index

Depuis la table, vous remarquerez que même si vous avez une base de données dans un modèle de récupération simple, la réorganisation de l'opération est entièrement enregistrée. Mais la reconstruction est minimalement connectée.

Réorganisation et reconstruction d'index

Du lien ci-dessus, vous trouverez que reconstruire l'index en cluster sans désactiver l'indice non clustered peut avoir un impact énorme sur l'utilisation du disque. De plus, l'ordre de reconstitution/réorganisation de l'opération d'indice groupé et non clusterné est important. Toutes les opérations non planées doivent être suivies d'opérations d'index en cluster.

Notez également l'infomation où il explique la Rebuld d'un grand indice en deux phases. La deuxième phase de cette opération fonctionne en arrière-plan et n'effectue pas les performances de la DB, mais le côté bas est un espace disque restera utilisé jusqu'à la fin de cette phase.

Maintenant, quelles sont les étapes logiques que vous pouvez prendre?

0) Assurez-vous que la base de données est dans le modèle de récupération de droite. Si DB a un mode "récupération complète", vous devez également avoir un processus de sauvegarde transparent de transection. Sinon, alors "la récupération complète" n'est pas vraiment nécessaire, vous devez revisiter le processus de sauvegarde du journal actuellement mis en œuvre.

1) Vérifiez le plan de maintenance et assurez-vous que vous faites de la reconstruction OR réorganiser comme sur la base des bonnes conditions. (Par exemple, pourcentage de fragmentation.) Dans certains cas, vous êtes sûr que vous souhaitez reconstruire l'index Pour une table spécifique qui va bien.

2) Vérifiez si Opertaion sur des index non clusterd est suivie d'une opération sur l'index en cluster. Si non mise à jour, le plan en conséquence.

3) Vous utilisez une édition étalée afin que toutes les opérations se produisent hors ligne. Mais vérifiez également si l'option Sort_in_tempdb est utilisée pour reconstruire/réorganiser.

4) Si la réponse de (3) est non: "Le SHIHC est le plus probable parce que vous augmentez la taille du journal de la DB actuelle et que vous n'avez rien mentionné sur TEMPDB", envisagez d'utiliser cette option après avoir examiné les chèques que j'ai mentionnés au point (5) .

5) Si la réponse de (3) est oui: "Ce qui est improbable", si tel est le cas, cela signifie que vous devez également vérifier la configuration TempDB est en train de faire preuve ou non. aimer,

    Does it have more than one LDF and MDF file? if no have atlease 2 for each.

    Are those files are set to increase at right amount instead of default 10mb?       
    if default then start with the 1024MB increament. gradually you should find the 
    sweet spot.

    Are those Files are ristricted to some size? if so check the disk size where the 
    files are and set accordingly.

    Even If your Tempdb is not located on Seperate Disk, from the disk Actual DB is    
    on, making sure above checks is good practice AMD sure help you.

6) En tant qu'office de bûche rétrécissante, il ne s'agit pas du diable si cela est fait modératement la même manière reconstruit/réorganiser n'est pas un ange lorsque vous le faites trop. Votre chèque shold si vous reconstruisez/réorganiser sur tout DB est vraiment nécessitant vraiment? Peut être hebdomadaire ou tous les 3 jours fonctionne mieux.

Je suis heureux de passer en revue les prochaines étapes/suggestions sur les statistiques une fois que vous avez essayé ci-dessus et que vous obtenez des résultats. Je ne m'attendrasiez pas à ce que les mesures ci-dessus résout mégalement votre préoccupation, c'est-à-dire que celles-ci amélioreront définitivement la situation.

3
Anup Shah
  • 1- Vous pourriez être en mesure de mieux contrôler la croissance en sauvegardant le journal des transactions plus fréquemment et configurer les sauvegardes de journal de transaction pour exécuter toutes les 15 minutes, 24 x 7, ou même plus fréquemment s'il y a une activité élevée.


  • 2-Sous le modèle de récupération complète, toutes les opérations en vrac sont entièrement enregistrées. Cependant, vous pouvez minimiser la journalisation pour un ensemble d'opérations en vrac en commutant la base de données sur le modèle de récupération enregistré en vrac temporairement pour les opérations en vrac. La journalisation minimale est plus efficace que la journalisation complète et réduit la possibilité d'une opération en vrac à grande échelle remplissant l'espace de journal de transaction disponible pendant une transaction en vrac. Toutefois, si la base de données est endommagée ou perdue lorsque la journalisation minimale est en vigueur, vous ne pouvez pas récupérer la base de données au point de défaillance.
  • 3-VOUS seriez mieux aidé à utiliser un processus de reconstruction séparé comme des scripts. Celles-ci permettent un contrôle beaucoup plus fin de la façon dont votre exécution reconstruit/réorientes. Voici un link pour vous aider avec des scripts que vous avez besoin !!
3
Up_One