OVH Cloud OVH Cloud

Défragmentation

7 réponses
Avatar
olivier
Bonjour,

est-ce qu'un serveur disposant de sql server 2000 peut-être défragmenté ?

Ou faut 'il plutôt faire une défragmentation des pages de données. ?

Ou les deux ?

Je demande cela car je remarque que les serveurs disposant de sql fragmente
beaucoup ...

7 réponses

Avatar
gfourrat
Ces deux notions interviennent à des niveaux différents, tu peux avoir une
fragmentation logique pour SQL Server alors que pour l'OS le fichier de la
base de données est bien d'un seul bloc contigu. Je ne me suis jamais
penché sur le sujet, mais j'imagine que l'autogrowth d'une base, par
exemple, doit favoriser la fragmentation OS sur un disque déjà encombré.
Mais évite de défragmenter lorsque SQL Server est online ;-)


Guillaume Fourrat
Microsoft France
--------------------
From: "olivier"
Subject: Défragmentation
Date: Fri, 12 Dec 2003 14:26:05 +0100

Bonjour,

est-ce qu'un serveur disposant de sql server 2000 peut-être défragmenté ?

Ou faut 'il plutôt faire une défragmentation des pages de données. ?

Ou les deux ?

Je demande cela car je remarque que les serveurs disposant de sql fragmente
beaucoup ...





Avatar
VUILLERMET Jacques
>Mais évite de défragmenter lorsque SQL Server est online ;-)



Pourquoi ?

Y a-t-il un risque ?

On entend tellement de choses diverses et contraires à ce sujet !
L'objectif final étant de limiter le déplacement des têtes de lecture pour
lire des données logiquement contigues.

Que dit Microsoft ?

Jacques.

""Guillaume Fourrat [MSFT]"" a écrit dans le
message de news:
Ces deux notions interviennent à des niveaux différents, tu peux avoir une
fragmentation logique pour SQL Server alors que pour l'OS le fichier de la
base de données est bien d'un seul bloc contigu. Je ne me suis jamais
penché sur le sujet, mais j'imagine que l'autogrowth d'une base, par
exemple, doit favoriser la fragmentation OS sur un disque déjà encombré.
Mais évite de défragmenter lorsque SQL Server est online ;-)


Guillaume Fourrat
Microsoft France
--------------------
>From: "olivier"
>Subject: Défragmentation
>Date: Fri, 12 Dec 2003 14:26:05 +0100
>
>Bonjour,
>
>est-ce qu'un serveur disposant de sql server 2000 peut-être défragmenté ?
>
>Ou faut 'il plutôt faire une défragmentation des pages de données. ?
>
>Ou les deux ?
>
>Je demande cela car je remarque que les serveurs disposant de sql


fragmente
>beaucoup ...
>
>
>



Avatar
olive
Oui je pense que si sql est en ligne on ne doit pas trop défragmenter...



Par contre étant donné que sql envoie des requétes d'écritures au systéme
pour insérer ses données je pense que l'on doit quant même défragmenter de
temps en temps...mais je voulais vérifier avec ms



"VUILLERMET Jacques" a écrit dans le message de
news:

>Mais évite de défragmenter lorsque SQL Server est online ;-)

Pourquoi ?

Y a-t-il un risque ?

On entend tellement de choses diverses et contraires à ce sujet !
L'objectif final étant de limiter le déplacement des têtes de lecture pour
lire des données logiquement contigues.

Que dit Microsoft ?

Jacques.

""Guillaume Fourrat [MSFT]"" a écrit dans


le
message de news:
> Ces deux notions interviennent à des niveaux différents, tu peux avoir


une
> fragmentation logique pour SQL Server alors que pour l'OS le fichier de


la
> base de données est bien d'un seul bloc contigu. Je ne me suis jamais
> penché sur le sujet, mais j'imagine que l'autogrowth d'une base, par
> exemple, doit favoriser la fragmentation OS sur un disque déjà encombré.
> Mais évite de défragmenter lorsque SQL Server est online ;-)
>
>
> Guillaume Fourrat
> Microsoft France
> --------------------
> >From: "olivier"
> >Subject: Défragmentation
> >Date: Fri, 12 Dec 2003 14:26:05 +0100
> >
> >Bonjour,
> >
> >est-ce qu'un serveur disposant de sql server 2000 peut-être défragmenté


?
> >
> >Ou faut 'il plutôt faire une défragmentation des pages de données. ?
> >
> >Ou les deux ?
> >
> >Je demande cela car je remarque que les serveurs disposant de sql
fragmente
> >beaucoup ...
> >
> >
> >
>




Avatar
gfourrat
Le Défragmenteur NT va ignorer les fichiers des bases SQL si elles sont
online.
Par contre, l'impact sur les perfs disque risque de ne pas passer inaperçu
chez SQL =).

Cordialement,

Guillaume Fourrat
Microsoft France
--------------------
From: "olive"
References:




Subject: Re: Défragmentation
Date: Sun, 14 Dec 2003 21:02:08 +0100


-Tomcat-NG: microsoft.public.fr.sqlserver

Oui je pense que si sql est en ligne on ne doit pas trop défragmenter...



Par contre étant donné que sql envoie des requétes d'écritures au systéme
pour insérer ses données je pense que l'on doit quant même défragmenter de
temps en temps...mais je voulais vérifier avec ms




Avatar
Nicolas LETULLIER
La fragmentation disque ne se produit qu'au niveau fichier, plus exactement,
allocation de clusters pour le fichier. Quand SQL Server crée ou augmente un
fichier de base de données (ou de journal), il demande à Windows
l'allocation de l'ensemble des clusters disponibles. Aussi, la fragmentation
des fichiers de données ne dépend pas de la taille des fichiers ni du volume
des données contenues, mais du nombre et de la fréquence des demandes
d'allocation de clusters, donc au moment de l'accroissement des fichiers de
base.

Il est donc important, pour prévenir cette fragmentation, d'allouer de
bonnes tailles de fichiers à vos bases et journaux.

Esemple, vous créez une BDD que vous estimez à 100 Mo. Si vous gardez les
paramètres par défaut lors de la création d'une base (Taille 1Mo, extent
10%), vous allez avoir une bonne cinquantaine d'extents, donc autant de
probabilité de fragmentation. Alors qu'en créant directement un fichier de
150Mo (en prévision), avec des extents à 10, 20,50 ou 100 Mo, le fichier
sera d'autant moins fragmenté.

Cependant, autant que possible, mettre les fichiers de données/transaction
sur des volumes/partitions dédiées, comme ça, cela limite d'autant plus les
possibilités de fragmentation.

En tout état de cause, je ne connais pas d'outil qui soient capables de
défragmenter des fichiers ouverts, par exemple des BDD lorsque le service
tourne. La défragmentation d'un tel volume lorsque SQL Server tourne
ralentira le serveur pendant la défragmentation et n'apportera aucune
amélioration sur les performances de la BDD elle-même.

Nicolas.




"olive" a écrit dans le message de
news:
Oui je pense que si sql est en ligne on ne doit pas trop défragmenter...



Par contre étant donné que sql envoie des requétes d'écritures au systéme
pour insérer ses données je pense que l'on doit quant même défragmenter de
temps en temps...mais je voulais vérifier avec ms



"VUILLERMET Jacques" a écrit dans le message de
news:
>
> >Mais évite de défragmenter lorsque SQL Server est online ;-)
>
> Pourquoi ?
>
> Y a-t-il un risque ?
>
> On entend tellement de choses diverses et contraires à ce sujet !
> L'objectif final étant de limiter le déplacement des têtes de lecture


pour
> lire des données logiquement contigues.
>
> Que dit Microsoft ?
>
> Jacques.
>
> ""Guillaume Fourrat [MSFT]"" a écrit


dans
le
> message de news:
> > Ces deux notions interviennent à des niveaux différents, tu peux avoir
une
> > fragmentation logique pour SQL Server alors que pour l'OS le fichier


de
la
> > base de données est bien d'un seul bloc contigu. Je ne me suis jamais
> > penché sur le sujet, mais j'imagine que l'autogrowth d'une base, par
> > exemple, doit favoriser la fragmentation OS sur un disque déjà


encombré.
> > Mais évite de défragmenter lorsque SQL Server est online ;-)
> >
> >
> > Guillaume Fourrat
> > Microsoft France
> > --------------------
> > >From: "olivier"
> > >Subject: Défragmentation
> > >Date: Fri, 12 Dec 2003 14:26:05 +0100
> > >
> > >Bonjour,
> > >
> > >est-ce qu'un serveur disposant de sql server 2000 peut-être


défragmenté
?
> > >
> > >Ou faut 'il plutôt faire une défragmentation des pages de données. ?
> > >
> > >Ou les deux ?
> > >
> > >Je demande cela car je remarque que les serveurs disposant de sql
> fragmente
> > >beaucoup ...
> > >
> > >
> > >
> >
>
>




Avatar
VUILLERMET Jacques
Si je te suis :

1 / il vaut mieux, de toute façon, créer un grand espace lorsqu'on doit
allouer de l'espace à une base (allocation initiale ou bien agrandissement)
;

2 / mais la défragmentation (SQL Server descendu c'est entendu) apporte
quelque chose : quand SQL Server doit lire 2 enregistrements, situés chacun
dans des extents différents (successifs ou non) et espacés sur le disque
alors la tête de lecture devra se déplacer (statistiquement) de beaucoup
(boucle d'asservissement de grande amplitude, puis celle de faible
amplitude) ; alors que si le fichier est défragmenté, SQL Server devra
toujours aller chercher les 2 enregistrements dans les 2 mêmes extents mais
ceux-ci étant plus proches, la distance entre les 2 pages les contenants
sera plus courte, donc moins de distance à parcourir dessus du disque.
Cependant, la distance peut être importante :
- en fonction du nombre d'extents entre les 2 concernés bien sûr,
- mais aussi, si le premier enregistrement est situé au début de son extent
et que le deuxième est situé à la fin du sien.

Non ?

Jacques.


"Nicolas LETULLIER" a écrit dans le
message de news: #zHY$
La fragmentation disque ne se produit qu'au niveau fichier, plus


exactement,
allocation de clusters pour le fichier. Quand SQL Server crée ou augmente


un
fichier de base de données (ou de journal), il demande à Windows
l'allocation de l'ensemble des clusters disponibles. Aussi, la


fragmentation
des fichiers de données ne dépend pas de la taille des fichiers ni du


volume
des données contenues, mais du nombre et de la fréquence des demandes
d'allocation de clusters, donc au moment de l'accroissement des fichiers


de
base.

Il est donc important, pour prévenir cette fragmentation, d'allouer de
bonnes tailles de fichiers à vos bases et journaux.

Esemple, vous créez une BDD que vous estimez à 100 Mo. Si vous gardez les
paramètres par défaut lors de la création d'une base (Taille 1Mo, extent
10%), vous allez avoir une bonne cinquantaine d'extents, donc autant de
probabilité de fragmentation. Alors qu'en créant directement un fichier de
150Mo (en prévision), avec des extents à 10, 20,50 ou 100 Mo, le fichier
sera d'autant moins fragmenté.

Cependant, autant que possible, mettre les fichiers de données/transaction
sur des volumes/partitions dédiées, comme ça, cela limite d'autant plus


les
possibilités de fragmentation.

En tout état de cause, je ne connais pas d'outil qui soient capables de
défragmenter des fichiers ouverts, par exemple des BDD lorsque le service
tourne. La défragmentation d'un tel volume lorsque SQL Server tourne
ralentira le serveur pendant la défragmentation et n'apportera aucune
amélioration sur les performances de la BDD elle-même.

Nicolas.




"olive" a écrit dans le message de
news:
> Oui je pense que si sql est en ligne on ne doit pas trop défragmenter...
>
>
>
> Par contre étant donné que sql envoie des requétes d'écritures au


systéme
> pour insérer ses données je pense que l'on doit quant même défragmenter


de
> temps en temps...mais je voulais vérifier avec ms
>
>
>
> "VUILLERMET Jacques" a écrit dans le message de
> news:
> >
> > >Mais évite de défragmenter lorsque SQL Server est online ;-)
> >
> > Pourquoi ?
> >
> > Y a-t-il un risque ?
> >
> > On entend tellement de choses diverses et contraires à ce sujet !
> > L'objectif final étant de limiter le déplacement des têtes de lecture
pour
> > lire des données logiquement contigues.
> >
> > Que dit Microsoft ?
> >
> > Jacques.
> >
> > ""Guillaume Fourrat [MSFT]"" a écrit
dans
> le
> > message de news:
> > > Ces deux notions interviennent à des niveaux différents, tu peux


avoir
> une
> > > fragmentation logique pour SQL Server alors que pour l'OS le fichier
de
> la
> > > base de données est bien d'un seul bloc contigu. Je ne me suis


jamais
> > > penché sur le sujet, mais j'imagine que l'autogrowth d'une base, par
> > > exemple, doit favoriser la fragmentation OS sur un disque déjà
encombré.
> > > Mais évite de défragmenter lorsque SQL Server est online ;-)
> > >
> > >
> > > Guillaume Fourrat
> > > Microsoft France
> > > --------------------
> > > >From: "olivier"
> > > >Subject: Défragmentation
> > > >Date: Fri, 12 Dec 2003 14:26:05 +0100
> > > >
> > > >Bonjour,
> > > >
> > > >est-ce qu'un serveur disposant de sql server 2000 peut-être
défragmenté
> ?
> > > >
> > > >Ou faut 'il plutôt faire une défragmentation des pages de données.


?
> > > >
> > > >Ou les deux ?
> > > >
> > > >Je demande cela car je remarque que les serveurs disposant de sql
> > fragmente
> > > >beaucoup ...
> > > >
> > > >
> > > >
> > >
> >
> >
>
>




Avatar
Nicolas LETULLIER
Oui, je dirais que c'est ça. Mais il ne faut pas voir non plus un
déplacement de tête de disque dur comme le parcours du combattant. Passer
d'un extent à l'autre est quand même extrèment rapide. La fragmentation est
significative sur de très gros fichiers répartis sur de très nombreux
clusteurs. Si tu as eu 10, voire même 100 processus d'accroissement de tes
fichiers, ce n'est pas une défragmentation qui changera grand-chose dans les
performances de ta base. Ne pas oublier qu'en fonction de la taille de la
base et de la RAM, les lectures pourront se faire plus souvent en cache.

En gros, je dirais que la défragmentation (au niveau OS j'entends bien) n'a
que très peu d'influences sur les performances de la base. Quitte à "perdre"
du temps, il vaut mieux optimiser les indexes ;-)

Nicolas.


"VUILLERMET Jacques" a écrit dans le message de
news:%

Si je te suis :

1 / il vaut mieux, de toute façon, créer un grand espace lorsqu'on doit
allouer de l'espace à une base (allocation initiale ou bien


agrandissement)
;

2 / mais la défragmentation (SQL Server descendu c'est entendu) apporte
quelque chose : quand SQL Server doit lire 2 enregistrements, situés


chacun
dans des extents différents (successifs ou non) et espacés sur le disque
alors la tête de lecture devra se déplacer (statistiquement) de beaucoup
(boucle d'asservissement de grande amplitude, puis celle de faible
amplitude) ; alors que si le fichier est défragmenté, SQL Server devra
toujours aller chercher les 2 enregistrements dans les 2 mêmes extents


mais
ceux-ci étant plus proches, la distance entre les 2 pages les contenants
sera plus courte, donc moins de distance à parcourir dessus du disque.
Cependant, la distance peut être importante :
- en fonction du nombre d'extents entre les 2 concernés bien sûr,
- mais aussi, si le premier enregistrement est situé au début de son


extent
et que le deuxième est situé à la fin du sien.

Non ?

Jacques.