MongoDB - la taille du fichier est énorme et en croissance
J'ai une application qui utilisent mongo pour le stockage à court de vie des données. Toutes les données de plus de 45 minutes est enlevé par un script quelque chose comme:
oldSearches = [list of old searches]
connection = Connection()
db = connection.searchDB
res = db.results.remove{'search_id':{"$in":oldSearches}})
J'ai vérifié l'état actuel -
>db.results.stats()
{
"ns" : "searchDB.results",
"count" : 2865,
"size" : 1003859656,
"storageSize" : 29315124464,
"nindexes" : 1,
"ok" : 1
}
Donc, selon cette 1 go de données occupe 29GB de stockage. Dossier de données ressemble à ceci(Vous pouvez voir que de nombreux fichiers sont très vieux - dernier accès à la mi-mai):
ls -l /var/lib/mongodb/
total 31506556
-rwxr-xr-x 1 mongodb nogroup 6 2011-06-05 18:28 mongod.lock
-rw------- 1 mongodb nogroup 67108864 2011-05-13 17:45 searchDB.0
-rw------- 1 mongodb nogroup 134217728 2011-05-13 14:45 searchDB.1
-rw------- 1 mongodb nogroup 2146435072 2011-05-20 20:45 searchDB.10
-rw------- 1 mongodb nogroup 2146435072 2011-05-28 00:00 searchDB.11
-rw------- 1 mongodb nogroup 2146435072 2011-05-27 13:45 searchDB.12
-rw------- 1 mongodb nogroup 2146435072 2011-05-29 16:45 searchDB.13
-rw------- 1 mongodb nogroup 2146435072 2011-06-07 13:50 searchDB.14
-rw------- 1 mongodb nogroup 2146435072 2011-06-06 01:45 searchDB.15
-rw------- 1 mongodb nogroup 2146435072 2011-06-07 13:50 searchDB.16
-rw------- 1 mongodb nogroup 2146435072 2011-06-07 13:50 searchDB.17
-rw------- 1 mongodb nogroup 2146435072 2011-06-06 09:07 searchDB.18
-rw------- 1 mongodb nogroup 268435456 2011-05-13 14:45 searchDB.2
-rw------- 1 mongodb nogroup 536870912 2011-05-11 00:45 searchDB.3
-rw------- 1 mongodb nogroup 1073741824 2011-05-29 23:37 searchDB.4
-rw------- 1 mongodb nogroup 2146435072 2011-05-13 17:45 searchDB.5
-rw------- 1 mongodb nogroup 2146435072 2011-05-18 17:45 searchDB.6
-rw------- 1 mongodb nogroup 2146435072 2011-05-16 01:45 searchDB.7
-rw------- 1 mongodb nogroup 2146435072 2011-05-17 13:45 searchDB.8
-rw------- 1 mongodb nogroup 2146435072 2011-05-23 16:45 searchDB.9
-rw------- 1 mongodb nogroup 16777216 2011-06-07 13:50 searchDB.ns
-rw------- 1 mongodb nogroup 67108864 2011-04-23 18:51 test.0
-rw------- 1 mongodb nogroup 16777216 2011-04-23 18:51 test.ns
Selon le "top" mongod utilise 29G de la mémoire virtuelle ( et 780Mb de RSS)
Pourquoi dois-je avoir des valeurs anormales? Ai-je besoin pour exécuter quelque chose de supplémentaire .remove() de la fonction de nettoyage de la base de données à partir d'anciennes valeurs?
source d'informationauteur Andrew
Vous devez vous connecter pour publier un commentaire.
http://www.mongodb.org/display/DOCS/Caching
Lorsque vous supprimez un objet de collection MongoDB, l'espace qu'il occupait est pas automatiquement les ordures collectées et de nouveaux enregistrements sont seulement ajouté à la fin des fichiers de données, les faisant croître de plus en plus gros. C'est ce qui explique tout:
http://www.mongodb.org/display/DOCS/Excessive+Disque+Espace
Pour commencer, il suffit d'utiliser: