J'ai une table MySQL utilisant le moteur de stockage InnoDB ; elle contient environ 2 millions de lignes de données. Lorsque je supprime des lignes de données de la table, cela ne libère pas l'espace disque alloué. Après avoir exécuté la commande optimize table
, la taille du fichier ibdata1 n'a pas non plus diminué.
Existe-t-il un moyen de récupérer de l'espace disque depuis MySQL ?
Je suis dans une mauvaise situation : l'application fonctionne dans environ 50 emplacements différents et maintenant je manque d'espace disque dans presque tous.
J'ai moi-même rencontré le même problème.
Ce qui se passe, c'est que même après la suppression de la base de données, innodb ne libère toujours pas d'espace disque. Je dois exporter, arrêter MySQL, supprimer les fichiers manuellement, démarrer MySQL, créer une base de données et un utilisateur, puis importer. Dieu merci, je n'ai que 200 Mo de lignes, mais cela a enregistré 250 Go de fichier innodb.
La conception a échoué.
MySQL ne réduit pas la taille d'ibdata1. une fois. Même si vous utilisez
优化表
pour libérer l'espace utilisé par les enregistrements supprimés, il le réutilisera plus tard.Une autre méthode consiste à configurer le serveur pour qu'il utilise
innodb_file_per_table
,但这需要备份、删除数据库和恢复。积极的一面是,在优化表格
.