MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB verwendet viel Speicher

1) In Bezug auf die Haltbarkeit können Sie dem MongoDB-Java-Treiber (den Morphia verwendet) mitteilen, welche Strategie verwendet werden soll, siehe https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/ mongodb/WriteConcern.java#L53 . Es ist einfach ein Kompromiss zwischen Geschwindigkeit:NONE (nicht einmal Verbindungsprobleme verursachen einen Fehler) bis zu FSYNC_SAFE (Die Daten werden definitiv auf die Festplatte geschrieben). Für die internen Details siehe http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/

2) Ihre gesamten Daten werden im Speicher abgebildet (daher hat die 32-Bit-Edition eine Größenbeschränkung von 2 GB), sie werden jedoch nur bei Bedarf tatsächlich geladen. MongoDB überlässt dies dem Betriebssystem, indem es mmap verwendet. Solange also mehr RAM verfügbar ist, lädt MongoDB gerne alle benötigten Daten in den RAM, um Abfragen sehr schnell durchzuführen. Steht kein Speicher mehr zur Verfügung, ist es Sache des Betriebssystems, altes Zeug auszulagern. Das hat den netten Effekt, dass Ihre Daten auch dann im Speicher bleiben, wenn Sie den MongoDB-Prozess neu starten; nur wenn Sie den Server selbst neu starten, müssen die Daten erneut von der Platte geholt werden. Ich denke, der Nachteil ist, dass der Datenbankprozess im Vergleich zum Betriebssystem möglicherweise ein etwas besseres Verständnis dafür hat, was zuerst ausgelagert werden sollte. Ich verwende MongoDB nicht unter Windows und habe diese Meldung (noch) nicht auf Mac oder Linux gesehen ), aber das Betriebssystem sollte das für Sie erledigen (und Informationen nach Bedarf automatisch austauschen). Haben Sie versucht, den Treiber auf JOURNAL_SAFE einzustellen (sollte ein guter Kompromiss zwischen Datensicherheit und Geschwindigkeit sein)? In dieser Einstellung sollten keine Daten verloren gehen, selbst wenn der MongoDB-Prozess stirbt.

3) Im Allgemeinen ist MongoDB darauf ausgelegt, so viel verfügbaren Speicher wie möglich zu verwenden, aber Sie können ihn möglicherweise mit http://captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ - was ich nicht getestet habe, da wir (virtuelle) Linux-Server verwenden.