MongoDB

MongoDB ist die führende Open-Source, Document Datenbank die für einfache Entwicklung und Skalierung aber auch für Big Data Szenarien entwickelt wurde.

Leistungssteigerungen mit MongoDB 4.2

Experte
Jede Leistungsverbesserung ist wichtig, damit Anwendungen reibungsloser laufen und Benutzer eine bessere Erfahrung haben. Sie fragen sich wahrscheinlich, was sich in Bezug auf die Leistung in MongoDB 4.2 geändert hat. Sehen wir uns also mal einige der Geschwindigkeitssteigerungen in der aktuellen Version an.

  • Kleine Updates, große Geschwindigkeitssteigerung

    • Wenn Sie über große Dokumente mit ca. 10 MB und mehr verfügen, dann können kleine Aktualisierungen an diesen Dokumenten dazu führen, dass der Server unnötige Speicherverwaltungsmaßnahmen durchführt und die damit die Gesamtleistung verringert. Das MongoDB Engineering hat das Problem diagnostiziert und einen Fix erstellt, der die Leistung dieser speziellen Operationen um zwei Größenordnungen verbesserte. Das Update war so gut, es auch auf MongoDB 4.0.7 und 3.6.11 portiert wurde.

      • Beschleunigte Aggregation

        • Die Aggregation ist eine mächtige Funktion in MongoDB und bietet einen riesigen Raum für die ständige Optimierung durch das Engineering. Mit MongoDB 4.2 war eine dieser Optimierungen seltsamerweise, keine Aggregation zu verwenden. Der Server ist jetzt so intelligent, dass er erkennt, wenn kleine Aggregationen wie eine einfache Übereinstimmung
          [{$project: {excluded: 0}}, {$match: {predicate: true}}]

          durch das bereits stark optimierte Abfragesystem effizienter ausgeführt werden kann. In dieser Situation wird die kleine Aggregation transparent in eine schnelle Abfrage umgewandelt, die kein Hochfahren einer Pipeline erfordert, während die größeren Aggregationen in der Lage sind, die Fast-Streaming-Pipelines im Aggregationsframework optimal zu nutzen.

          Die Kunst der Optimierung besteht darin, unnötige Arbeit zu vermeiden und sich daran zu erinnern, was man schon einmal ausgeführt hat. Zum Beispiel nutzt eine Beschleunigung in MongoDB 4.2 die Tatsache, dass der Inhalt einer Pipeline möglicherweise bereits sortiert wurde, wenn es darum geht, den Inhalt zu gruppieren und den ersten Eintrag jeder Gruppe herauszuholen. Früher führte der Server einen vollständigen Index-Scan durch, jetzt nutzt er die bereits sortierten Daten, um überspringt diesen Schritt.

          Bei anderen Optimierungen werden Indexdaten besser verwendet, ähnlich wie bei verdeckten Abfragen, wenn dünn besetzte Indizes in der Pipeline effizienter aggregiert und verarbeitet werden.

          • Array Up

            • Große unsortierte Arrays $in Operation waren ein weiteres Ziel für die Optimierung in MongoDB 4.2. Aufgrund ihrer Natur sind sie schwierig effizient zu handhaben - wenn Sie Ihre Arrays sortieren, ist das umso besser für die Performance - aber die MongoDB Ingenieure waren sich sicher, dass sie die Performance verbessern können. Bei der Bewältigung der Herausforderung an verschiedenen Fronten zeigte die Lösung eine vier- bis fünfmal bessere Leistung. Beim Testen mit zehntausend Elementarrays sogar eine Verbesserung um 20 bis 30 Prozent mit eintausend Elementarrays. Sortierte Arrays erzielen immer noch eine bessere Leistung. Wenn Sie sie also sortieren können, sollten Sie dies tun. Dies ist ein weiterer Fall, in dem die Verbesserung so gut ist, dass sie nicht einfach in MongoDB 4.2 belassen werden konnten - die Optimierung wurde auf MongoDB 3.2.21, 3.4.16, 3.6.6, 4.0.1 zurückportiert.

              • Optimieren der Indexerstellung

                • Ein neues Feature, bei dem es von Anfang an ausschließlich um Optimierung ging, waren die neuen Optimized Index Builds. Das Ziel dieser neuen Funktion war es, eine Indexerstellung mit der Leistung von MongoDB´s 4.0 Indexerstellung, im Vordergrund, mit dem nicht blockierenden Verhalten und der geringen Auswirkung der Indexerstellung, im Hintergrund, zu erreichen. Es war ein Ziel, das das Engineering-Team mehr als erfüllt hat.

                  Diese Verbesserung wirkt sich nicht nur bei der Erstellung von Indizes aus. Durch die Reduzierung der Ressourcenkosten für die Indizierung wurden durch die Änderungen auch die Kosten für das Einfügen neuer Einträge in die Indizes gesenkt. Dies führte zu einer Verbesserung der Leistungstests, zu kürzeren Zeiten beim Laden von Indizes und zu einer schnelleren Indizierung eingefügter Dokumente.

                  • Die einzige Verlangsamung

                    • Das Performance-Team hat einige Verlangsamungen festgestellt, genauer gesagt, eine Verlangsamung. Der Testprozess ergab, dass in einem bestimmten Fall eine Auflistung, mit anderen eindeutigen Indizes als dem Index _id, betroffen ist. In diesem Fall könnte das massenhafte Einfügen neuer Dokumente mit bereits vorhandenen eindeutigen Werten, für die eindeutigen Indexfelder, um bis zu 22% verlangsamt werden. Der Overhead wurde bei der Suche nach Duplikaten identifiziert, die nichts zurückgibt. Die Auswirkung dieser Regression hängt von der Anzahl der eindeutigen Indizes für die jeweilige Collection ab.

                      Dass dies der einzige Nachteil in der MongoDB Version 4.2 war, zeigt, wie gut die Entwicklung verlief. Das Team hat den gesamten Entwicklungszyklus mit einer umfangreichen Testsuite überwacht und auf alle möglichen Regressionen (und unerwartete Beschleunigungen) getestet. Alle Ausnahmen der zuvor erwähnten Bulk-Insert- / Unique-Index-Regressionen, die während dieses Prozesses gefunden wurden, wurden vor der endgültigen Veröffentlichung von MongoDB 4.2 behoben.

                      • Zusammenfassung

                        • MongoDB ständig optimiert, um den Nutzern die bestmögliche Leistung zu bieten. MongoDB 4.2 bildet hier keine Ausnahme. Die neuen Funktionen und Verbesserungen bedeuten, dass die Datenbank besser als je zuvor läuft.

Neueste Mitgliederaktivitäten

Tags

Diesen Community Beitrag weiterempfehlen