simple question, mais ça me harcelait depuis un moment ...
qu'est-ce que "overhead" dans MySQL, et devrais-je m'inquiéter?
le fait de cliquer sur "optimiser la table" le répare-t-il réellement?
Il semble que la surcharge résulte de l'espace disque temporaire utilisé par la base de données pour exécuter certaines des requêtes. Par conséquent, vous ne devez vous inquiéter que si le niveau atteint réellement un niveau élevé.
Vous pouvez comparer "Optimisation de la table" à la défragmentation de votre disque dur.
Je cite:
Au fil du temps, chaque base de données nécessitera une forme de maintenance pour être maintenue à un niveau de performance optimal. Purger les lignes supprimées, reséquencer, compresser, gérer les chemins d'index, défragmenter, etc. est ce qu'on appelle OPTIMISATION dans mysql et d'autres termes dans d'autres bases de données. Par exemple, IBM DB2/400 l’appelle REORGANIZE PHYSICAL FILE MEMBER.
C'est un peu comme changer l'huile dans votre voiture ou obtenir une mise au point. Vous pensez peut-être que vous n'êtes pas obligé de le faire, mais votre voiture fonctionne beaucoup mieux, votre consommation d'essence est meilleure, etc. Une voiture qui fait beaucoup de kilométrage nécessite des mises au point plus fréquentes. Une base de données très utilisée requiert la même chose. Si vous effectuez beaucoup d'opérations UPDATE et/ou DELETE, et en particulier si vos tables ont des colonnes de longueur variable (VARCHAR, TEXT, etc.), vous devez rester à l'écoute.
Si vous parlez de ce que phpMyAdmin
appelle overhead
, il s'agit de la taille réelle d'un fichier de données de table par rapport à la taille idéale du même fichier de données (comme si elle venait d'être restaurée à partir d'une sauvegarde).
Pour des raisons de performances, MySQL
ne compresse pas les fichiers de données après avoir supprimé ou mis à jour des lignes.
Ce overhead
est mauvais pour l'analyse de table, i. e. lorsque votre requête doit exécuter toutes les valeurs de la table, elle doit examiner davantage d'espace vide.
Vous pouvez vous débarrasser de overhead
en lançant OPTIMIZE TABLE
qui compactera votre table et vos index.
La surcharge est Data_free d'une table, c'est-à-dire Le nombre d'octets alloués mais non utilisés. Nous pouvons le trouver par la commande SQL SHOW TABLE STATUS. C'est l'espace libre dans la taille allouée pour votre table.
Optimiser la table peut être très problématique. Par exemple, si la table est fortement utilisée sur un site.
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
Après avoir supprimé une grande partie d'une table MyISAM ou ARCHIVE, ou apporté de nombreuses modifications à une table MyISAM ou ARCHIVE avec des lignes de longueur variable (tables comportant des colonnes VARCHAR, VARBINARY, BLOB ou TEXT). Les lignes supprimées sont conservées dans une liste chaînée et les opérations INSERT suivantes réutilisent les anciennes positions de ligne.
Je crois avoir confirmé ce comportement. Et ce serait certainement très utile.