L'espace libre dans MySQL, après la suppression de tables & colonnes?
J'ai une base de données de près de 20 GO. J'ai besoin de supprimer 5 tables & drop quelques colonnes dans certains 3 autres tables.
Abandon 5 tables avec connexion à 3 GO et la suppression de colonnes dans d'autres tables, devrait libérer un autre de 8 go.
Comment puis-je récupérer cet espace à partir de MySQL.
J'ai lu un dump de la base de données et de les restaurer à l'arrière comme l'un de la solution, mais je ne suis pas vraiment sûr de savoir comment cela fonctionne, je ne suis même pas sûr si cela fonctionne uniquement pour la suppression de la base de données entière ou seulement en partie?
Veuillez indiquer comment aller à ce sujet. Merci.
une fois que le tableau a chuté, mysql va supprimer le fichier physique ainsi, logiquement, l'espace disque libre. quel est votre problème/l'intention ?
Je ne pense pas que c'est le cas, parce que j'ai laissé tomber d'une table de 1 GO et je suis sûr que je n'ai pas le disque de l'espace? Même si je l'ai fait, comment vous y prendriez-vous autour de ce pour la suppression de colonnes?
Avez-vous fait
peut-être Gaurav n'est pas à l'aide de tables MyISAM? Les tables InnoDB sont tous sur un seul fichier/périphérique bloc
Puisque vous êtes à l'aide de InnoDB, êtes-vous à l'aide de innodb_file_per_table? Si non, vous n'aurez pas de retour de l'espace parce que c'est dans l'espace de stockage partagé. InnoDB va réutiliser par la suite, mais vous n'aurez pas tout de suite.
Je ne pense pas que c'est le cas, parce que j'ai laissé tomber d'une table de 1 GO et je suis sûr que je n'ai pas le disque de l'espace? Même si je l'ai fait, comment vous y prendriez-vous autour de ce pour la suppression de colonnes?
Avez-vous fait
du -shc YOUR_DATABASE_DIRECTORY
avant et après ? Vous pouvez utiliser optimize table
de l'abandon de la colonne bien que mysql va encore automatique de la poignée pour libérer de l'espace pour la table de la mise à jour du schémapeut-être Gaurav n'est pas à l'aide de tables MyISAM? Les tables InnoDB sont tous sur un seul fichier/périphérique bloc
Puisque vous êtes à l'aide de InnoDB, êtes-vous à l'aide de innodb_file_per_table? Si non, vous n'aurez pas de retour de l'espace parce que c'est dans l'espace de stockage partagé. InnoDB va réutiliser par la suite, mais vous n'aurez pas tout de suite.
OriginalL'auteur Gaurav | 2010-12-02
Vous devez vous connecter pour publier un commentaire.
Les commentaires, on dirait que vous êtes en utilisant InnoDB sans le fichier par l'option de tableau.
À la reconquête de l'espace de l'espace de stockage innodb n'est généralement pas possible dans ce mode. Votre seul recours est de faire un dump de la base de données entière, tourner sur fichier par table de mode, et de le recharger (avec un complètement propre instance mysql). Cela va prendre beaucoup de temps avec une grande base de données; mk-parallèle-vidage et la restauration des outils peut-être un peu plus rapide, mais il faudra encore un certain temps. Assurez-vous de tester ce processus sur un serveur de production non en premier.
Cela sonne comme une bonne idée. Va l'essayer.
OriginalL'auteur MarkR
EDIT: Ne s'applique pas sans file_per_table, la Marque est là.
Ce qu'il se passe, c'est que une fois que MySQL prend de l'espace, il ne le laissera pas en arrière. C'est ainsi que si vous supprimez les 500 lignes et ensuite l'insérer immédiatement 500, il n'a pas à donner de l'espace pour le système de fichiers, puis la demande de retour. C'est une optimisation pour éviter de système de fichiers dessus, et il fonctionne bien lorsque vous supprimez peu de bits.
Si vous supprimez une grande quantité, il faudra beaucoup de temps pour la fin de l'aide de tout cet espace, de nouveau, ce qui peut être gênant. Ceci peut être résolu de deux façons: la suppression de la table et de le recharger le contenu, ou de l'optimisation de la table (qui, je crois, fondamentalement, de la recharge de la table interne).
Tout ce que vous avez à faire pour obtenir un espace à partir d'une table est la suivante:
Notez que cela peut prendre un certain temps, ce n'est pas une quasi-instantanée de l'opération. Fondamentalement, le plan pour un certain temps d'arrêt. Si vos tables sont juste quelques concerts, il ne devrait pas être trop long (probablement quelques minutes). Cela a également reconstruit les index et fait quelques autres de ménage.
Vous pouvez en savoir plus sur optimiser sur le site de MySQL. Ici, c'est que c'est des conseils:
Mysql n'est une réécriture complète à l'interne. Veuillez également noter que l'espace disque de la "vraie grandeur" de la table doit être disponible lors de l'exécution de
OPTIMIZE TABLE [table]
OriginalL'auteur MBCook