Récemment, en surveillant MongoDB, j’ai été rappelé de l’importance du DML (langage de manipulation de données) – la capacité à interroger (SELECT), modifier (UPDATE), stocker (INSERT) et supprimer (DELETE) des données.
J’ai rencontré un problème surprenant avec MongoDB : après la suppression de données, l’espace disque n’était pas restitué. L’utilisation du disque de notre serveur MongoDB avait atteint 78%, et le serveur de développement Mongo avait même pas été utilisé pendant trois mois, était plein.
J’ai effectué divers tests et j’ai découvert que lorsque j’ai supprimé la collection, l’espace disque diminuait, mais lorsque j’ai supprimé la collection, l’espace disque est resté le même. C’était alarmant car la suppression de données aurait dû restituer l’espace disque.
Après avoir recherché le problème, j’ai découvert la commande “compact”. C’est comme la défragmentation pour le disque – une commande qui nettoie les données inutilisées et restitue l’espace à utiliser. L’effet de la commandeé; l utilisation du disque est passée de 78% à 36%.
1. Tout d’abord, accédez à la base de données.
use database_name
2. Sélectionnez la collection que vous souhaitez compacter.
db.runCommand( {compact : Collection_name, force : true} )
3. Et ensuite, attendre anxieusement…
Heureusement, aucun verrouillage de collection n’a été appliqué pendant mes tests, et même lorsque j’ai exécuté la commande sur le serveur de production, il n’y a eu aucun problème majeur. Cependant, le temps d’attente .
En réalité, la commande “compact” n’est pas une solution parfaite pour la capacité de stockage. Selon divers articles, la meilleure approche consiste à migrer les données vers un nouveau serveur. être recommandée pour tous les environnements, mais cela vaut la peine d’être envisagé si votre entreprise ou environnement le permet.
Dans l’ensemble, tout en gérant MongoDB, j’ai pris le temps de réfléchir à l’importance du DML et à quel point il est crucial de gérer les données correctamente.