Key Takeaways
- Indexierung in MongoDB kann die Leistung und den Durchsatz erheblich verbessern, indem die Anzahl der vollständigen Dokumente reduziert werden, die gelesen werden müssen, wodurch die Anwendungsleistung verbessert wird.
- mongoDB unterstützt verschiedene Arten von Indexen, einschließlich Standard -_ID -Index, Sekundärindex, Verbindungsindex, Multikey -Index und Multikey -Verbindungsindex. Jeder Typ dient einem bestimmten Zweck und wird für verschiedene Arten von Abfragen verwendet.
- mehr als ein Index kann in einer Sammlung definiert werden, aber eine Abfrage kann nur einen Index während ihrer Ausführung verwenden. Der beste Index wird zur Laufzeit von MongoDBs Query-optimizer ausgewählt.
- Während die Indexierung die Lesevorgänge dramatisch verbessern kann, verursacht es auch seine eigenen Kosten. Die Indexierungsvorgänge belegen Platz und verursachen zusätzlichen Overhead bei jedem Einsatz, Aktualisierung und Löschen von Betrieb auf der Sammlung. Daher profitieren die indizierenden Vorteile von Leseblühen mehr als schreibschreibige Sammlungen.
- Standard _id Index
- Sekundärindex
- Verbindungsindex
- Multikey Index
- Multikey Compound Index
<span>{ </span> <span>"_id": <span>ObjectId</span>("5146bb52d852470060001f4"), </span> <span>"comments": { </span> <span>"0": "This is the first comment", </span> <span>"1": "This is the second comment" </span> <span>}, </span> <span>"post_likes": 40, </span> <span>"post_tags": { </span> <span>"0": "MongoDB", </span> <span>"1": "Tutorial", </span> <span>"2": "Indexing" </span> <span>}, </span> <span>"post_text": "Hello Readers!! This is my post text", </span> <span>"post_type": "private", </span> <span>"user_name": "Mark Anthony" </span><span>}</span>Lassen Sie uns nun verschiedene Arten der Indexierung im Detail untersuchen.
Standard _id Index
Standardmäßig erstellt MongoDB für jede Sammlung einen Standardindex für das Feld _id. Jedes Dokument verfügt über ein eindeutiges Feld als Primärschlüssel, ein 12-Byte-ObjektID. Wenn keine anderen Indizes verfügbar sind, wird dies standardmäßig für alle Arten von Abfragen verwendet. Öffnen Sie die MongoDB -Shell, um die Indizes für eine Sammlung anzuzeigen, und machen Sie Folgendes:
Sekundärindex
In Fällen, in denen wir in anderen Feldern als _ID -Feld die Indizierung verwenden möchten, müssen wir benutzerdefinierte Indizes definieren. Angenommen, wir möchten nach Posts basierend auf dem Feld user_name suchen. In diesem Fall definieren wir einen benutzerdefinierten Index im Feld user_name der Sammlung. Solche benutzerdefinierten Indizes als der Standardindex werden als sekundäre Indizes bezeichnet. Um den Effekt der Indexierung auf die Datenbank zu demonstrieren, analysieren wir kurz die Abfrageleistung, ohne zuerst zu indizieren. Dafür werden wir eine Abfrage ausführen, um alle Beiträge mit einem user_name mit "Jim Alexandar" zu finden.<span>{ </span> <span>"_id": <span>ObjectId</span>("5146bb52d852470060001f4"), </span> <span>"comments": { </span> <span>"0": "This is the first comment", </span> <span>"1": "This is the second comment" </span> <span>}, </span> <span>"post_likes": 40, </span> <span>"post_tags": { </span> <span>"0": "MongoDB", </span> <span>"1": "Tutorial", </span> <span>"2": "Indexing" </span> <span>}, </span> <span>"post_text": "Hello Readers!! This is my post text", </span> <span>"post_type": "private", </span> <span>"user_name": "Mark Anthony" </span><span>}</span>Eine wichtige Methode, die häufig mit der Indexierung verwendet wird, ist erklärt (), die Informationen zurückgibt, die für die Indexierung relevant sind. Die Ausgabe der obigen Erklärung () ist wie unten gezeigt:
- Cursor - Zeigt den in der Abfrage verwendeten Index an. BasicCursor zeigt an, dass der Standardindex verwendet wurde und MongoDB die gesamte Sammlung durchsuchen musste. Wenn wir die Indexierung anwenden, wird bTreecuror anstelle von BasicCursor . verwendet
- n - Gibt die Anzahl der Dokumente an, die die Abfrage zurückgegeben hat (in diesem Fall ein Dokument).
- nscannedObjects - Gibt die Anzahl der von der Abfrage durchsuchten Dokumente an (in diesem Fall wurden alle 500 Dokumente der Sammlung durchsucht). Dies kann ein Betrieb mit großem Overhead sein, wenn die Anzahl der in der Sammlung sehr großer Dokumente sehr groß ist.
- nScanned - Zeigt die Anzahl der während des Datenbankvorgangs gescannten Dokumente an.
Verbindungsindex
Es wird Fälle geben, in denen eine Abfrage mehr als ein Feld verwendet. In solchen Fällen können wir zusammengesetzte Indizes verwenden. Betrachten Sie die folgende Abfrage, die sowohl die post_type- als auch post_likes -Felder verwendet:<span>{ </span> <span>"_id": <span>ObjectId</span>("5146bb52d852470060001f4"), </span> <span>"comments": { </span> <span>"0": "This is the first comment", </span> <span>"1": "This is the second comment" </span> <span>}, </span> <span>"post_likes": 40, </span> <span>"post_tags": { </span> <span>"0": "MongoDB", </span> <span>"1": "Tutorial", </span> <span>"2": "Indexing" </span> <span>}, </span> <span>"post_text": "Hello Readers!! This is my post text", </span> <span>"post_type": "private", </span> <span>"user_name": "Mark Anthony" </span><span>}</span>Die Analyse dieser Abfrage mit erklärt () ergibt das folgende Ergebnis, das zeigt, dass die Abfrage BasicCursor verwendet und alle 500 Dokumente gescannt werden, um ein Dokument abzurufen.
- field1
- field1, field2
- field1, field2, field3
<span><span><?php </span></span><span><span>// query to find posts with user_name "Jim Alexandar" </span></span><span><span>$cursor = $collection->find( </span></span><span> <span>array("user_name" => "Jim Alexandar") </span></span><span><span>); </span></span><span><span>// use explain() to get explanation of query indexes </span></span><span><span>var_dump($cursor->explain());</span></span></span>Dadurch wird sichergestellt, dass die Abfrage den auf den Feldern post_type und post_likes definierten zusammengesetzten Index verwendet.
Multikey Index
Wenn die Indexierung in einem Array -Feld durchgeführt wird, wird es als Multikey -Index bezeichnet. Betrachten Sie unser Post -Dokument erneut; Wir können einen Multikey -Index auf post_tags anwenden. Der Multikey -Index würde jedes Element des Arrays indexieren, sodass in diesem Fall separate Indizes für die post_tags -Werte erstellt werden: mongoDB , Tutorial , Indexierung und bald.
Multikey Compound Index
Wir können einen Multikey -Verbindungsindex erstellen, aber mit der Einschränkung, dass höchstens ein Feld im Index ein Array sein kann. Wenn wir also Feld1 als Zeichenfolge und [Field2, Feld3] als Array haben, können wir den Index {field2, field3} nicht definieren, da beide Felder Arrays sind. Im folgenden Beispiel erstellen wir einen Index auf den Feldern post_tags und user_name:
Indexierungsbeschränkungen und Überlegungen
Es ist wichtig zu wissen, dass die Indexierung nicht in Abfragen verwendet werden kann, bei denen reguläre Ausdrücke, Negationsoperatoren (d. H. $ ne, $ nicht usw.), arithmetische Operatoren (d. H. $ mod usw.), JavaScript -Ausdrücke in der $ where verwendet werden Klausel und in einigen anderen Fällen. Die Indexierungsvorgänge haben auch ihre eigenen Kosten. Jeder Index nimmt Platz ein und führt zu einem zusätzlichen Overhead bei jedem Einsatz, Aktualisierung und Löschen von Operationen in der Sammlung. Sie müssen das Les: Schreibverhältnis für jede Sammlung berücksichtigen. Die Indexierung ist vorteilhaft für les-hungrige Sammlungen, ist jedoch möglicherweise nicht für Schreibkollektionen. MongoDB hält Indizes im RAM. Stellen Sie sicher, dass die Gesamtindexgröße die RAM -Grenze nicht überschreitet. Wenn dies der Fall ist, werden einige Indizes aus dem RAM entfernt und daher verlangsamen Abfragen. Außerdem kann eine Sammlung maximal 64 Indizes haben.Zusammenfassung
Das ist alles für diesen Teil. Zusammenfassend sind die Indizes für eine Anwendung von großem Nutzen, wenn ein ordnungsgemäßer Indexierungsansatz gewählt wird. Im nächsten Teil werden wir die Verwendung von Indizes für eingebettete Dokumente, Unterdokumente und Bestellungen untersuchen. Bleiben Sie dran! Bild über Fotolienhäufig gestellte Fragen zur MongoDB -Indexierung
Was ist die Bedeutung der MongoDB -Indexierung in der Datenbankverwaltung? Es verbessert die Leistung von Datenbankoperationen erheblich, indem es einen effizienteren Weg zu den Daten bietet. Ohne Indizes muss MongoDB einen Sammlungsscan durchführen, d. H. SCORKEL in einer Sammlung scannen, um die Dokumente auszuwählen, die der Anweisung für Abfragen übereinstimmen. Mit Indizes kann MongoDB seine Suche auf die relevanten Teile der Daten einschränken und so die Datenmenge verringern, die sie scannen müssen. Dies führt zu schnelleren Abfragemaßzeiten und einer geringeren CPU -Verwendung, was in großen Datenbanken besonders vorteilhaft ist.
Wie funktioniert die MongoDB -Indexierung? Diese Datenstruktur umfasst den Wert eines bestimmten Feldes oder einer Reihe von Feldern, die vom Wert des Feldes geordnet sind, wie im Index angegeben. Wenn eine Abfrage ausgeführt wird, verwendet MongoDB diese Indizes, um die Anzahl der Dokumente zu begrenzen, die sie überprüfen muss. Die Indizes sind besonders vorteilhaft, wenn die Gesamtgröße der Dokumente den verfügbaren RAM überschreitet. Die Leistung Ihrer Fragen. Dazu gehören Einzelfeld-, Verbindungs-, Multikey-, Text-, 2D- und 2dSphere -Indizes. Jeder Indextyp dient einem bestimmten Zweck und wird für verschiedene Arten von Abfragen verwendet. Beispielsweise werden einzelne Feld- und Verbindungsindizes für Abfragen auf einzelnen bzw. mehreren Feldern verwendet. Multikey -Indizes werden für Arrays verwendet, und Textindizes werden für den String -Inhalt verwendet.
Wie erstelle ich einen Index in MongoDB? . Diese Methode erstellt einen Index für ein bestimmtes Feld, wenn der Index noch nicht vorhanden ist. Die Methode nimmt zwei Parameter vor: das Feld oder die Felder zum Index und ein Optionsdokument, mit dem Sie zusätzliche Optionen angeben können.
Kann ich mehrere Indizes in MongoDB erstellen? Indizes in MongoDB. Es ist jedoch wichtig zu beachten, dass Indizes zwar die Abfrageleistung verbessern, aber auch Systemressourcen, insbesondere Speicherplatz und Speicher, konsumieren. Daher ist es entscheidend, Indizes mit Bedacht und nur auf diesen Feldern zu erstellen, die häufig abgefragt werden. MongoDB hängt weitgehend von den Abfragemustern Ihrer Anwendung ab. Felder, die häufig in Sortiervorgängen abfragt oder verwendet werden, sind gute Kandidaten für die Indexierung. Darüber hinaus sind Felder mit einem hohen Grad an Einzigartigkeit auch gute Kandidaten für die Indexierung, da sie die Anzahl der Dokumente, die MongoDB bei der Ausführung einer Abfrage scannen müssen, erheblich reduzieren können.
Sie können überprüfen, ob in MongoDB ein Index mit der Methode getIndexes () vorhanden ist. Diese Methode gibt eine Liste aller Indizes in einer Sammlung zurück, einschließlich des standardmäßigen _id -Index.
Kann ich einen Index in mongoDB? MongoDB unter Verwendung der DropIndex () -Methode. Diese Methode entfernt den angegebenen Index aus einer Sammlung. . Dies kann besonders nützlich sein, wenn kein einzelner Index eine Abfrage erfüllen kann, aber der Schnittpunkt von zwei oder mehr Indizes kann.
Wie wirkt sich die Indexierung auf Schreibvorgänge in MongoDB aus? Dies liegt daran, dass jedes Mal, wenn ein Dokument eingefügt oder aktualisiert wird, alle Indizes der Sammlung auch aktualisiert werden müssen. Je mehr Indizes eine Sammlung hat, desto langsamer wird die Schreibvorgänge sein. Es ist wichtig, beim Erstellen von Indizes ein Gleichgewicht zwischen Leseleistung und Schreibleistung zu finden.
Das obige ist der detaillierte Inhalt vonPHP Master | MongoDB -Indexierung, Teil 1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

Nach seiner hochkarätigen Akquisition durch Facebook im Jahr 2012 nahm Instagram zwei APIs für den Einsatz von Drittanbietern ein. Dies sind die Instagram -Graph -API und die Instagram Basic Display -API. Ein Entwickler, der eine App erstellt, die Informationen von a benötigt

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Dreamweaver Mac
Visuelle Webentwicklungstools
