Taille des tables MySQL

WRInaute discret
Bonsoir à tous,

Voila mon problème :
Je suis entrain d'optimiser ma base de données pour la rendre plus légère et plus rapide. En parcourant mes tables, je suis tombé sur une table qui contient 12 enregistrements avec 3 champs et la table fait 1,6Mo, rien que ça. Pour info, je n'ai pas créé cette table, elle fait partie du forum punBB. Donc voila ma question est : Quels sont les bons plans pour réduire la taille d'une table, et comment ca se fait que 12 enregistrements engendrent 1,6 Mo ?

Merci d'avance pour vos réponses
 
WRInaute passionné
Hello,

1) il y a quoi dans ces 12 enregistrements ? S'il y a 100Ko de données pour chaque ça va vite...
2) il s'agit de quel type de table InnoDB ? MyISAM ? Memory ?
3) phpmyadmin indique un format "fixe" ou "dynamique" ?
4) phpmyadmin indique quelle taille en "pertes" ? Si > 0, tu peux tenter un "optimize table XXXX"
 
WRInaute discret
Alors voilà la structure de la table :

user_id int(10) UNSIGNEDTexte entier
ident varchar(200) latin1_swedish_ci
logged int(10) UNSIGNED
idle tinyint(1)

Alors en gros ca recense les utilisateurs en ligne donc y a un user_id un ident qui est une IP ou un PSEUDO, un logged qui est un timestamp et un idle qui est a 1 ou a 0.

Données 1 427,0 Kio
Index 211,4 Kio
Perte 27 300 o
effectif 1 611,7 Kio
Total 1 638,4 Kio

Pour ce qui est du type de table c est MEMORY, et il est en format FIXE
 
WRInaute accro
c'est à cause des pertes (à force de supprimer les enregistrement des users plus en ligne).
Il faut donc faire un OPTIMIZE TABLE régulièrement
 
WRInaute passionné
Il me semble que les tables "MEMORY" ne supportent pas les OPTIMIZE justement.

En tous cas ces tables MEMORY sont forcément en "fixe", c'est à dire qu'un champ varchar(200) comme tu as là occupe toujours 201 octets, même s'ils ne contiennent que 4 caractères... c'est pourquoi si on peut il vaut mieux éviter d'utiliser de tels champs pour ce type de table.
 
Discussions similaires
Haut