[mysql] fonction OPTIMIZE

fonction OPTIMIZE [mysql] - PHP - Programmation

Marsh Posté le 10-09-2003 à 23:49:50    

Salut à tous,
je me demande à quoi sert la fonction optimize en sql? en effet lors d'une suppression d'un enregistrement dans une table je constate qu'il y a des "pertes". ça correspond à quoi?
 
par avance merci  :jap:


---------------
www.element62.com
Reply

Marsh Posté le 10-09-2003 à 23:49:50   

Reply

Marsh Posté le 11-09-2003 à 00:06:07    

Quand tu supprimes un enregistrement, ca fait un "trou". Si tes enregistrements ont une taille fixe, la prochaine insertion pourra boucher ce trou. Mais ce n'est pas forcément le cas si tu utilises une taille variable, et tu peux vouloir récupérer toute la place perdue.
 
Le OPTIMIZE va rassembler les données pour boucher les trous :)  
 
(c'est un peu le même principe que la frgmentation sur un disque)


Message édité par mrbebert le 11-09-2003 à 00:07:00
Reply

Marsh Posté le 11-09-2003 à 00:10:22    

ok, mais dans une table j'ai par exemple l'enregistrement n1 et l'enregistrement n2.
si par php je supprime n2, il n'y a pas de trou vu qu'il ne reste plus qu'un seul enreg. ????
c ça que je comprends pas, d'autant plus que si à ce moment là on exporte la table, il n'y a pas de "trou" qui apparait, tout semble normal!
(ma question doit parraitre tordue!!!)
 
en tt cas merci pour ta réponse.


---------------
www.element62.com
Reply

Marsh Posté le 11-09-2003 à 00:22:06    

Si c'était le dernier, non, tu n'as pas de trou.
Si tu as n1-n2-n3 dans ta base, que tu supprimes n2, tu as un trou. Si tu ajoutes ensuite n4, il se met à la place qu'occupait n2 (en admettant que tu es des enregistrements de taille fixe).
Tu as donc n1-n4-n3. Si tu supprimes n4, tu as de nouveau un trou [:proy]
 
Au moment d'exporter, il n'y a pas de problème. Il n'y a pas beaucoup de rapport entre le fichier SQL généré et le stockage physique des données :)


Message édité par mrbebert le 11-09-2003 à 00:23:20
Reply

Marsh Posté le 11-09-2003 à 00:26:35    

mrBebert a écrit :

Si c'était le dernier, non, tu n'as pas de trou.
Si tu as n1-n2-n3 dans ta base, que tu supprimes n2, tu as un trou. Si tu ajoutes ensuite n4, il se met à la place qu'occupait n2 (en admettant que tu es des enregistrements de taille fixe).
Tu as donc n1-n4-n3. Si tu supprimes n4, tu as de nouveau un trou [:proy]
 
Au moment d'exporter, il n'y a pas de problème. Il n'y a pas beaucoup de rapport entre le fichier SQL généré et le stockage physique des données :)  


 
génial, c'est exactement ça que je captais pas trop. si tu en sais un peu plus à ce sujet, hésite pas  ;)  
merci


---------------
www.element62.com
Reply

Marsh Posté le 11-09-2003 à 00:30:29    

Dans ton exportation, c'est juste des instruction SQL permettant de reconstruire la base. Aucun rapport avec la manière dont sont physiquement enregistrées les données [:proy]  
 
INSERT INTO table VALUES(.......);
INSERT INTO table VALUES(.......);
...


Message édité par mrbebert le 11-09-2003 à 00:31:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed