MongoDB ist eine Hochleistungsdatenbank, bei der Nutzung können jedoch gelegentlich Leistungsprobleme auftreten. Im Vergleich zu anderen relationalen Datenbanken wie SQL Server, MySQL und Oracle ist MongoDB relativ neu und vielen Leuten nicht sehr vertraut. Daher konzentrieren sich viele Entwickler und DBAs eher auf die funktionale Implementierung und ignorieren die Leistungsanforderungen. Tatsächlich haben, wie bei SQL Server, MySQL und Oracle, die Designanpassungen, die Indexerstellung und die Anweisungsoptimierung von MongoDB enorme Auswirkungen auf die Leistung. Um die Leistung von MongoDB vollständig zu erkunden, werden die folgenden 18 Punkte einfach zusammengefasst. Alle sind herzlich eingeladen, weiter zusammenzufassen und zu verbessern. (1) Es wird empfohlen, den Standardwert für den Schlüssel _id im Dokument zu verwenden. Es ist verboten, benutzerdefinierte Werte in _id zu speichern. Interpretation: In jedem MongoDB-Dokument gibt es einen „_id“-Schlüssel, der standardmäßig ein ObjectID-Objekt ist (der Bezeichner umfasst Zeitstempel, Maschinen-ID, Prozess-ID und Zähler). Die Einfügegeschwindigkeit in MongoDB ist sehr unterschiedlich, wenn _id angegeben wird oder nicht. Die Angabe von _id verlangsamt die Einfügegeschwindigkeit. (2) Es wird empfohlen, kurze Feldnamen zu verwenden. Interpretation: Anders als bei relationalen Datenbanken muss jedes Dokument in einer MongoDB-Sammlung Feldnamen speichern, und lange Feldnamen erfordern mehr Speicherplatz. (3) MongoDB-Indizes können Dokumentabfrage-, Aktualisierungs-, Lösch- und Sortiervorgänge verbessern. Erstellen Sie daher Indizes entsprechend den Geschäftsanforderungen. (4) Jeder Index nimmt etwas Platz ein und verursacht Ressourcenverbrauch für Einfügevorgänge. Daher wird empfohlen, die Anzahl der Indizes für jede Sammlung auf 5 zu beschränken. (5) Bei Abfragen mit mehreren Schlüsseln ist die Erstellung eines zusammengesetzten Indexes, der diese Schlüssel enthält, eine gute Lösung. Die Schlüsselwertreihenfolge des zusammengesetzten Index ist sehr wichtig. Verstehen Sie das Prinzip des ganz linken Präfixes des Index. Interpretation: Erstellen Sie beispielsweise einen zusammengesetzten Index {a:1,b:1,c:1} für die Testsammlung. Führen Sie die folgenden sieben Abfrageanweisungen aus: db.test.find({a:"hallo"}) // 1 db.test.find({b:"sogo", a:"hallo"}) // 2 db.test.find({a:"hallo",b:"sogo",c:"666"}) // 3 db.test.find({c:"666", a:"hallo"}) // 4 db.test.find({b:"sogo", c:"666"}) // 5 db.test.find({b:"sogo" }) // 6 db.test.find({c:"666"}) // 7 Die obige Abfrageanweisung kann zum Index 1, 2, 3, 4 gehen Die Abfrage sollte das äußerste linke Indexfeld in der Reihenfolge enthalten, in der die Indizes erstellt wurden, unabhängig von der Reihenfolge der Abfragefelder. Die wenigsten Indizes decken die meisten Abfragen ab. (6) TTL-Index (Time-to-Live-Index, ein Index mit Lebenszyklus). Mithilfe des TTL-Index können Sie Dokumente altern lassen, die eine bestimmte Zeit überschritten haben. Wenn ein Dokument die Alterungsstufe erreicht, wird es gelöscht. Interpretation: Der Index zum Erstellen von TTL muss vom Typ „Datum“ sein. Ein TTL-Index ist ein Einzelfeldindex und kann kein zusammengesetzter Index sein. Der Hintergrund-Thread zum Löschen von TTL-Dokumenten entfernt alle 60 Sekunden ungültige Dokumente. Sammlungen mit fester Länge werden nicht unterstützt. (7) Wenn Sie einen Index für ein Feld in einer Sammlung erstellen müssen, aber eine große Anzahl von Dokumenten in der Sammlung diesen Schlüsselwert nicht enthält, wird empfohlen, einen Sparse-Index zu erstellen. Interpretation: Der Index ist standardmäßig dicht, das heißt, auch wenn das Indexfeld eines Dokuments fehlt, besteht eine entsprechende Beziehung im Index. In einem Sparse-Index werden nur Dokumente angezeigt, die den Indexschlüsselwert enthalten. (8) Wenn Sie einen Textindex erstellen, geben Sie das Feld als Text statt als 1 oder -1 an. Jede Sammlung hat nur einen Textindex, kann aber eine beliebige Anzahl Felder indizieren. Interpretation: Die Textsuche ist viel schneller und es wird empfohlen, Textindizes anstelle ineffizienter Abfragen in mehreren Feldern von Sammlungsdokumenten zu verwenden. (9) Verwenden Sie findOne, um mehrere übereinstimmende Elemente in der Datenbank abzufragen. Es wird das erste Element im natürlich sortierten Dokumentsatz zurückgegeben. Wenn Sie mehrere Dokumente zurückgeben müssen, verwenden Sie die Suchmethode. (10) Wenn die Abfrage nicht das gesamte Dokument zurückgeben muss oder nur dazu dient, zu bestimmen, ob der Schlüsselwert vorhanden ist, kann die Projektion (Zuordnung) verwendet werden, um die zurückgegebenen Felder einzuschränken und so den Netzwerkverkehr und die Client-Speichernutzung zu reduzieren. Interpretation: Sie können die zurückgegebenen Felder entweder explizit angeben, indem Sie {key:1} festlegen, oder Sie können {key:0} festlegen, um die auszuschließenden Felder anzugeben. (11) Mit Ausnahme von Abfragen im Präfixstil können Abfragen mit regulären Ausdrücken keine Indizes verwenden und ihre Ausführung dauert länger als die der meisten Selektoren. Sie sollten daher sparsam eingesetzt werden. (12) Bei Aggregationsoperationen muss $ vor match und vor $group stehen. Durch die Platzierung von $ vor dem Operator können Sie die Anzahl der Übereinstimmungen und die Anzahl der Dokumente reduzieren, die der Operator $group verarbeiten muss. (13) Das Ändern von Dokumenten durch Operatoren führt üblicherweise zu einer besseren Leistung, da kein Hin- und Herwechseln zum Server erforderlich ist, um die Dokumentdaten abzurufen und zu ändern, und weniger Zeit für das Serialisieren und Übertragen der Daten aufgewendet wird. (14) Durch Batch Insert können Sie die Anzahl der Datenübermittlungen an den Server verringern und die Leistung verbessern. Die BSON-Größe der Batchübermittlung überschreitet jedoch nicht 48 MB. (15) Es ist verboten, zu viele Daten auf einmal zum Sortieren abzurufen. MongoDB unterstützt derzeit das Sortieren von Ergebnismengen innerhalb von 32 MB. Wenn eine Sortierung erforderlich ist, versuchen Sie, die Datenmenge im Ergebnissatz zu begrenzen. (16) Einige $-Operatoren in der Abfrage können die Leistung beeinträchtigen, z. B. $ne, $, not, $exists, $nin und $or. Versuchen Sie, diese in Ihrem Unternehmen nicht zu verwenden. a) $exist: Aufgrund der losen Dokumentstruktur muss die Abfrage jedes Dokument durchlaufen; b) $ne: Wenn der negierte Wert die Mehrheit ist, wird der gesamte Index gescannt; c) $not: kann dazu führen, dass der Abfrageoptimierer nicht weiß, welchen Index er verwenden soll, sodass es häufig zu einem vollständigen Tabellenscan kommt; d) $nin: vollständiger Tabellenscan; e) \$Wenn mehrere Bedingungen vorliegen, wird die Abfrage eine bestimmte Anzahl von Malen ausgeführt und die Ergebnismengen werden am Ende zusammengeführt. Sie sollten eine Konvertierung in oder in Erwägung ziehen: Wenn mehrere Bedingungen vorliegen, wird die Abfrage eine bestimmte Anzahl von Malen ausgeführt und die Ergebnismengen werden am Ende zusammengeführt. Sie sollten eine Konvertierung in $in in Erwägung ziehen. (17) Feste Sammlungen können zum Aufzeichnen von Protokollen verwendet werden, was das Einfügen von Daten beschleunigt und es ermöglicht, die frühesten Daten beim Einfügen von Daten zu eliminieren. Diese Funktion kann bei der Bedarfsanalyse und beim Entwurf berücksichtigt werden, was die Leistung verbessert und das Löschen überflüssig macht. Interpretation: Feste Sammlungen müssen explizit erstellt werden, wobei die Größe und die Anzahl der Dokumente angegeben werden müssen. Unabhängig davon, welches Limit zuerst erreicht wird, werden beim Einfügen neuer Dokumente in die Sammlung die ältesten Dokumente gelöscht. (18) Die Datenmenge in den Dokumenten der Sammlung wirkt sich auf die Abfrageleistung aus. Um die entsprechende Menge aufrechtzuerhalten, müssen sie regelmäßig archiviert werden. Mongodb-Leistungsoptimierung Die Datenbankleistung hat einen entscheidenden Einfluss auf die Gesamtleistung der Software. Die am häufigsten verwendeten Methoden zur Leistungsoptimierung für Mongodb-Datenbanken sind: 1. Paradigmierung und Deparadigmierung; 2. Verwendung des Füllfaktors; 3. Verwendung von Indizes; Oben finden Sie alle Informationen dazu, wie Sie die Leistung von MongoDB verbessern können. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: So importieren und exportieren Sie Docker-Images
>>: Zusammenfassung der 10 wichtigsten JavaScript-Interviewfragen (empfohlen)
Vorwort Swap ist eine spezielle Datei (oder Parti...
Inhaltsverzeichnis Geschäftslogik Datentabellenst...
Vorwort Ich habe viele Blogs gelesen und von viel...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Hintergrund erkunden Zusammenf...
Inhaltsverzeichnis Was ist Docker einsetzen 1. Zi...
1. Befehlseinführung Mit dem Befehl seq (Sequence...
Inhaltsverzeichnis 502 Bad Gateway Fehlerbildung ...
Vorwort Wenn wir Anwendungen als Docker-Container...
Sie müssen CSS gleichzeitig auf Div oder Span anwe...
Inhaltsverzeichnis Szenarioanalyse Entwicklung Zu...
MySql 8.0 entsprechendes Treiberpaket passend Nac...
Dies ist eine erweiterte Version. Die Fragen und ...
Die Konfigurationssyntax von Nginx ist flexibel u...
Kopieren Sie das Zertifikat und den Schlüssel im ...