none
défragmentation

    Question

  • bonjour,

    le disque dur de mon serveur Windows 2003 r2 sp2 avec SQL Server 2005 SP4 est extrêmement fragmenté...

    pour corriger ce problème,

    je compte procéder comme cela:

    - sauvegarder mes bases de données (sur un autre serveur)

    - supprimer les bases

    - défragmenter le disque dur du serveur des bases de données

    - restaurer les bases

    est-ce-que cela semble adapté? y-a-t-il des manipulations de défragmentation à effectuer sur les bases elles-mêmes?

    je compte arrêter SQL Server pendant la défragmentation mais y-a-t-il un risque particulier lors de la défragmentation du disque dur du serveur?

    merci pour votre aide

    Monday, September 12, 2011 10:33 AM

Answers

  • Bonjour

    La fragmentation interne ne changera pas avec un RESTORE de la base de données, elle sera peut être amélioré du fait que les fragments de fichiers sont dans le bon ordre sur le disque, mais disparaitra.

    Il y a plusieurs moyens pour la fragmentation interne

    • Plan de maintenance, tâche de Reconstruction des Index "Index Rebuild"
    • Manuellement sur toutes les tables, avec :

    ALTER INDEX ALL ON dbo.MaTable REBUILD
    

    L'exemple et sur MaTable à vous de le faire sur toutes...
    Le plan de maintenance reste le plus simple sans avoir à rentrer dans le code SQL.

    Bonne journée


    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://www.sqlnco.ch
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    Monday, September 12, 2011 12:14 PM

All replies

  • Bonjour,

     

    avec 2003 R2 SP2, les risques sont vraiment très limités. Vous pouvez lancer la defragmentation sans souci.

    Il vaut mieux arrêter le serveur SQL, les bases systèmes ne tourneront alors pas.

    Pour les sauvegardes, ne pas oublier les bases system.

     

    Cordialement

    Monday, September 12, 2011 11:06 AM
  • Bonjour

    Je ne vois pas pourquoi vous voulez supprimer les bases de données, puis les restaurer.

    Si c'est uniquement une défragmentation disque que vous souhaitez faire, il vous suffira d'arrêter l'instance SQL Server puis de réaliser la défragmentation. A moins que vous n'ayez vraiment plus d'espace libre sur ces disques, vous gagnerez du temps.

    Par contre je vous recommande de faire une sauvegarde SQL Server classique avant l'opération.
    Il n'y a pas de risque pendant cette opération, sauf à arrêter l'opération par une coupure de l'alimentation ou qu'un secteur défectueux soit présent sur le disque, si qui sur un serveur ce serait déjà vu depuis un bon bout de temps.

    N'oubliez pas la fragmentation interne de vos bases de données, pensez à passer un coup de rebuild d'index en passant :o)

    Bonne journée.


    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://www.sqlnco.ch
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    Monday, September 12, 2011 11:52 AM
  • merci pour vos conseils

    effectivement, c'est pour la fragmentation interne des bases que je pensais à une suppression/restauration

     

    comment faites-vous une défragmentation interne des bases sans cela?

     

    merci

    Monday, September 12, 2011 12:06 PM
  • Bonjour

    La fragmentation interne ne changera pas avec un RESTORE de la base de données, elle sera peut être amélioré du fait que les fragments de fichiers sont dans le bon ordre sur le disque, mais disparaitra.

    Il y a plusieurs moyens pour la fragmentation interne

    • Plan de maintenance, tâche de Reconstruction des Index "Index Rebuild"
    • Manuellement sur toutes les tables, avec :

    ALTER INDEX ALL ON dbo.MaTable REBUILD
    

    L'exemple et sur MaTable à vous de le faire sur toutes...
    Le plan de maintenance reste le plus simple sans avoir à rentrer dans le code SQL.

    Bonne journée


    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://www.sqlnco.ch
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    Monday, September 12, 2011 12:14 PM
  • dans mon plan de maintenance qui s'exécute tous les soirs, j'ai un recalcul des statistiques puis une reconstruction des index. C'est bien de cela dont vous parlez?

     

    merci Christian

    Monday, September 12, 2011 12:19 PM
  • Oui tout à fait
    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://www.sqlnco.ch
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    Monday, September 12, 2011 1:19 PM
  • D'accord, merci.

     

    Je me demandais s'il mettait à jour uniquement les index ou s'il touchait également aux tables correspondantes.

    Monday, September 12, 2011 1:31 PM
  • Evitez cependant de faire un calcul des statistiques avec une reconstruction d'index. Ces 2 tâches font doublons dans votre plan. En effet la reconstruction d'un index met automatiquement à jour les statistiques associées.

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1
    Monday, September 12, 2011 6:00 PM
  • Peut être pas supprimer la tâche, mais la configurer sur les statistiques de colonne uniquement.

    Le rebuild d'un index remet les stat à jour mais uniquement sur l'index, mais sur les stats créées sur d'autres colonnes.


    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://www.sqlnco.ch
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    Monday, September 12, 2011 8:03 PM
  • (pour moi, la reconstruction des index se basait sur les statistiques et je pensais donc qu'il fallait mettre à jour les statistiques avant de reconstruire les index )

    je n'ai pas compris la méthode que vous préconnisez

     

     



    • Edited by Opcyp Tuesday, September 13, 2011 1:42 PM
    Tuesday, September 13, 2011 1:31 PM
  • Bonjour

    Dans votre plan de maintenance, vous mettez une tâche de reconstruction d'index, et avant ou parès (aucune importance) vous mettez une tâche de recalcul de statistiques.

    Vous devez configurez cette tâche, vou indiquez dans celles ci que vous sohaitez mettre à jour les statistiques des colonnes uniquement (ni toutes, ni index).

    Et çà sera bon.

    Comme David l'indique plus haut, le fait de recréer un index recalcule les statistiques de celui-ci.
    Comme toutes les données sont lues et que les statistiques sont stockées dans la table qui contient la définition des index le moteur fait d'1 pierre 2 coups.

    Au final votre plan de maintenance sera un peu plus rapide, sans aucuns effets négatifs.

    Autre point le rôle des statistiques, elles servent uniquement à l'optimisation des requêtes, lors de la phase de compilation.

    Bonne journée


    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://www.sqlnco.ch
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    Tuesday, September 13, 2011 2:05 PM
  • D'accord!

     

    merci pour vos explications Christian

    Tuesday, September 13, 2011 2:43 PM
  • Bonjour,

     

    voilà la défragmentation est terminée.

    Celle lancée avec l'outils Windows n'a pas aboutit, j'ai donc utilisé un autre utilitaire.

    Mes fichiers .mdf (d'une taille de 100Go environ) sont encore en 70 fragments...

    Conseillez-vous de les supprimer et de restaurer les bases après la défragmentation?

    Merci!

    Wednesday, September 14, 2011 12:10 PM
  • je ne sais pas si je peux poser d'autres questions ici vu qu'il y a une encoche verte devant le titre du topic?

    • Edited by Opcyp Thursday, September 15, 2011 12:39 PM
    Thursday, September 15, 2011 12:38 PM
  • je ne sais pas si je peux poser d'autres questions ici vu qu'il y a une encoche verte devant le titre du topic?

    vous pouvez postulez de nouveau un autre question dans la section qui vous convient 

    bonne journée 


    @fethiabassi
    • Edited by ABASSI FETHI Thursday, September 15, 2011 4:21 PM
    Thursday, September 15, 2011 4:21 PM
  • merci, le problème c'est qu'avec l'encoche verte, les autres personnes pensent que le sujet est résolu et ne le lisent donc pas. Je ne voulais pas en créer un nouveau pour ne pas polluer le forum.
    Friday, September 16, 2011 7:22 AM