février 20, 2022

MySQL::Re: comment réduire une base de données MySQL

Correct. Il s’agit d’une limitation du fichier d’espace de table partagé d’InnoDB. Ce serait une opération très coûteuse pour le serveur MySQL de compacter l’espace utilisé dans le fichier tablespace et de réduire le fichier. Imaginez si vous avez un fichier d’espace de table de 100 Go et que vous souhaitez effectuer une reconstruction pour le compacter. En règle générale, les reconstructions de tables MySQL nécessitent que l’ancien et le nouveau stockage existent simultanément sur le disque pendant l’opération.
Le comportement d’InnoDB consiste donc à laisser l’espace vide et à l’utiliser pour l’insertion ultérieure de nouvelles versions de ligne.
Voir :
Bug #1287 http://bugs.mysql.com/bug.php?id=1287
Bug #1341 http://bugs.mysql.com/bug.php?id=1341
Une solution pour réduire un espace de table InnoDB partagé est :
1. Sauvegarde * toutes les * tables InnoDB avec mysqldump.
2. Déposez toutes les tables InnoDB.
3. Supprimez physiquement le fichier ibdata1 à l’interface du système de fichiers.
4. Redémarrez le serveur MySQL, qui recrée un nouveau petit fichier d’espace de table.
5. Restaurez toutes vos tables InnoDB, ce qui étend le fichier tablespace selon les besoins.
Une autre solution consiste à utiliser l’option pour stocker les tables InnoDB dans un fichier séparé par table. Voir http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html Si vous faites cela, vous devriez pouvoir utiliser OPTIMIZE TABLE ou ALTER TABLE sur chaque table InnoDB que vous souhaitez réduire. Ceci est censé reconstruire le.fichier ibd pour la table individuelle.
Cordialement,
Bill K.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.