Warum sind meine MongoDB-Abfragen wirklich sehr, sehr langsam?

9

Ich habe einen großen MongoDB-Server bei der Arbeit geerbt und wurde beauftragt herauszufinden, warum Abfragen, die dagegen ausgeführt werden, so langsam sind. Die DB enthält Tonnen und Tonnen von Datensätzen (in der Größenordnung von 10 ^ 9) und nimmt ungefähr 300 GiB auf. Zuerst dachte ich, dass die rohe Anzahl der Datensätze der Schuldige gewesen sein könnte, also habe ich Indizes für geeignete Felder eingerichtet. Dies war sehr hilfreich bei Abfragen, bei denen nach Kriterien in der Datenbank gesucht wurde, bei Abfragen, bei denen keine Übereinstimmungen vorhanden waren, zwischen 80 und 90 Minuten. Irgendwelche Ideen, wie man das angehen kann?

Mark LeMoine
quelle
1
Welche Version von MongoDB? Welche Hardware? Wie viele Scherben?
Rob Olmos
2
Oh, der Schmerz des geerbten Problems ...
GWaldo

Antworten:

5

Es scheint, dass Ihnen ein wichtiger Index fehlt, zumal die Abfrage ohne Übereinstimmungen viel länger dauert als eine Abfrage mit Übereinstimmungen. Um welche Art von Abfrage handelt es sich? Vielleicht brauchen Sie einen zusammengesetzten Index? Verwenden Sie whereals Teil der Abfrage?

Ich bin kein Experte für MongoDB, aber 80-90 Minuten sind absolut abnormal. Ich weiß nicht, wie MongoDB für Arenstar "klingt", aber es hat sich gezeigt, dass es Milliarden von Dokumenten (Terabyte an Daten) verarbeitet .

Alexei Boronine
quelle
4

Dies mag für eine Antwort zu spät sein, aber ich dachte, es wäre erwähnenswert. Es gibt Tools wie Mongostat, mit denen Sie sehen können, was tatsächlich vor sich geht. Zu viele Indexfehler, zu viele Seitenfehler. Wenn Sie gleichzeitig Lese- und Schreibvorgänge ausführen, sollten Sie auch nach dem Prozentsatz der Sperren suchen. 300 GB sind für Mongodb keine große Menge. Es kann leicht weit darüber hinausgehen.

Andere hilfreiche Befehle:

    db.stats();
    db.currentOp();
awsiv
quelle
-5

MongoDb ist Webskala .. Sorry musste das sagen ..

Keine Übereinstimmungen dauern wahrscheinlich eine Weile, basierend auf einem Entfernungsscan ???

Ich würde es aufschlüsseln. Mongo klingt nicht wie eine Datenbank für 300 GB und ist wahrscheinlich noch nicht ausgereift genug, um zu wissen, wie es mit großen Datenmengen umgeht.

Aus welchem ​​Grund benutzt du Mongo?

Arenstar
quelle
Es war genau das, was der Typ vor mir (der gegangen war) bequem benutzte und es leider implementiert hatte. Auf der positiven Seite sind wir offen für neue DB-Vorschläge.
Mark LeMoine
Welche Daten speichern Sie ??? Alles dreht sich um Ihre Datenstruktur
Arenstar
Es handelt sich um kleine Protokolldateidatensätze, von denen jeder eine ID (int), einen Servernamen (Zeichenfolge), eine Nachrichtennutzlast (Zeichenfolge), ein Datum und eine IP-Adresse enthält. Ich habe derzeit Indizes zu ID und Servername.
Mark LeMoine
8
Es gibt eine Menge Unternehmen, die Mongodb verwenden. 300g ist machbar, fragen Sie die Leute bei foursquare, wordnik und boxedice, die eine Menge Daten haben. Wenn überhaupt, sind die Indizes falsch. Ich würde diese überprüfen, bevor Sie die Datenbank herausreißen und durch etwas anderes ersetzen.
Luckytaxi
1
@Arenstar: Was bedeutet Webskala? Und wie unterscheidet es sich von jeder anderen Skala?
Joshua Partogi