


Pourquoi MySQL InnoDB ne libère-t-il pas d'espace disque après la suppression des données et comment puis-je le récupérer ?
Dec 04, 2024 pm 10:21 PMLibération d'espace disque insuffisante après la suppression des données MySQL InnoDB
Le moteur de stockage InnoDB de MySQL est connu pour ne pas libérer automatiquement l'espace disque alloué lorsque les lignes de données sont supprimé d'un tableau. Ce comportement est dû à la nature du modèle de stockage basé sur les lignes d'InnoDB. Lorsqu'une ligne est supprimée, l'espace qu'elle occupait n'est pas immédiatement libéré mais marqué comme disponible pour être réutilisé par de futures insertions ou extensions de table.
Par conséquent, même après avoir supprimé des lignes de données et exécuté des commandes d'optimisation comme OPTIMIZE TABLE, la taille du fichier d'espace de table partagé d'InnoDB, généralement nommé ibdata1, peut rester le même. Cela peut entraîner des problèmes d'espace disque faible, en particulier dans les environnements comportant de nombreuses tables et des opérations de suppression de données fréquentes.
Pour résoudre ce problème, les utilisateurs disposent de deux options principales :
- Utiliser des espaces de table par table : En définissant l'option de configuration innodb_file_per_table sur ON, InnoDB créera des fichiers d'espace de table individuels pour chaque table. Lorsqu'une table est optimisée, la taille de son fichier d'espace de table individuel sera réduite pour refléter l'espace libéré après la suppression des données. Cependant, cette solution nécessite la création d'une nouvelle base de données et la restauration des données à partir d'une sauvegarde, ce qui peut prendre du temps.
- Réduire le fichier de base de données : Si l'utilisation d'espaces de table par table n'est pas faisable, une méthode alternative consiste à réduire le fichier ibdata1. Ceci peut être réalisé en suivant une série d'étapes :
- Arrêtez le serveur MySQL.
- Sauvegardez la base de données à l'aide d'un outil tel que mysqldump.
- Modifier la variable innodb_data_file_path dans le fichier de configuration MySQL (my.cnf) pour pointer vers une nouvelle taille de fichier plus petite. Par exemple :
innodb_data_file_path = ibdata1:10M # shrink to 10 MB
- Démarrez le serveur MySQL.
- Restaurez la base de données à partir de la sauvegarde créée précédemment.
Ce processus va créez un nouveau fichier ibdata1 avec la taille réduite spécifiée, tout en préservant les données de la base de données d'origine. Gardez à l'esprit que cette méthode peut nécessiter de l'espace disque supplémentaire pendant le processus de restauration.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)?
