Dans MySQL, que signifie «Overhead», qu'est-ce qui ne va pas et comment y remédier?

157

question simple, mais ça me harcèle depuis un moment maintenant ....

qu'est-ce que "overhead" dans MySQL, et devrais-je m'inquiéter?

est-ce que cliquer sur "Optimiser la table" le corrige pour de vrai?

johnnietheblack
la source

Réponses:

147

Il semble que la surcharge soit l'espace disque temporaire utilisé par la base de données pour exécuter certaines des requêtes, vous ne devriez donc vous inquiéter que si cela devient vraiment élevé.

Vous pouvez comparer «Optimiser la table» avec la défragmentation de votre disque dur.

Je cite:

Chaque base de données nécessitera, au fil du temps, une forme de maintenance pour la maintenir à un niveau de performance optimal . Purger les lignes supprimées, reséquencer, compresser, gérer les chemins d'index, défragmenter, etc. est ce que l'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 de votre voiture ou faire une mise au point. Vous pensez peut-être que vous n'êtes pas obligé de le faire, mais ce faisant, votre voiture fonctionne beaucoup mieux, vous obtenez une meilleure consommation d'essence, etc. Une voiture qui consomme beaucoup de kilomètres nécessite des mises au point plus souvent. Une base de données très utilisée nécessite la même chose. Si vous faites beaucoup d'opérations UPDATE et / ou DELETE, et surtout si vos tables ont des colonnes de longueur variable (VARCHAR, TEXT, etc.), vous devez rester à jour.

Jaspe
la source
1
@Jasper Les tables sont-elles complètement verrouillées (impossible de lire / écrire) pendant la durée de l'optimisation?
Pacerier
4
D'où vient cette citation? Je trouve beaucoup de résultats sur Google.
Ian Hunter
comment savoir ce qui cause les frais généraux encore et encore?
mahen3d
merci pour l'exemple parfait et facile, indépendamment des termes techniques effrayants.
shyammakwana.me
1
Qu'est-ce qui est considéré comme «vraiment élevé»?
TV-C-15
87

Si vous parlez de la chose qui phpMyAdminappelle overhead, c'est 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 s'il venait d'être restauré à partir d'une sauvegarde).

Pour des raisons de performances, MySQLne compacte pas les fichiers de données après avoir supprimé ou mis à jour des lignes.

C'est overheadmauvais pour l'analyse de table, c'est-à-dire que lorsque votre requête doit s'exécuter sur toutes les valeurs de la table, elle devra regarder plus d'espace vide.

Vous pouvez vous en débarrasser overheaden exécutant OPTIMIZE TABLEce qui compactera votre table et vos index.

Quassnoi
la source
7
La taille de la documentation mysql dit "OPTIMIZE TABLE doit être utilisé si vous avez supprimé une grande partie d'une table ou si vous avez apporté de nombreuses modifications à une table avec des lignes de longueur variable", c'est mon cas, merci :)
boclodoa
8

La surcharge est Data_free d'une table, c'est-à-dire le nombre d'octets alloués mais inutilisés. Nous pouvons le trouver par la commande SQL SHOW TABLE STATUS . Il s'agit de l'espace libre en taille allouée pour votre table.

Shankar Prakash G
la source
1

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 avoir apporté de nombreuses modifications à une table MyISAM ou ARCHIVE avec des lignes de longueur variable (tables qui ont des colonnes VARCHAR, VARBINARY, BLOB ou TEXT). Les lignes supprimées sont conservées dans une liste lié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.

Thomas Lindegaard Jensen
la source