Auf dieser Seite finden Sie Beispiele für die Berechnung von Abrechnungseinheiten in einigen der häufigsten Szenarien. Beachten Sie, dass sich die verarbeiteten Daten für jede Abfrage aufgrund von Faktoren wie dem Abfrageplan, der Form der Daten und den verfügbaren Indexen unterscheiden können.
Wir empfehlen, die Funktion Abfrageerklärung zu verwenden, um die Kosten und die Leistung Ihrer spezifischen Abfragen besser zu verstehen.
Lesevorgänge
Die meisten Lesevorgänge umfassen entweder das Lesen eines bestimmten Dokuments oder das Scannen eines Datenbereichs anhand einer Kennung. Lesevorgänge verbrauchen Leseeinheiten. Betrachten Sie die folgenden Beispiele.
Volltextsuche
Bei den Gebühren für Volltextsuchanfragen wird zwischen den Kosten für die Suche in einem Textindex und den Kosten für das Abrufen der Dokumente unterschieden. Die Kosten für die Suche in einem Textindex hängen von der Komplexität der Abfrage und der Menge der im Index gescannten Daten ab, um die Ergebnisse zu finden. Zu den Faktoren, die diese Kosten beeinflussen, gehören die Anzahl und Art der Suchbegriffe (z.B. Begriffe, Wortgruppen), ob eine Relevanzbewertung angewendet wird und die Anzahl der Indexeinträge, die untersucht werden müssen. Die Kosten für das Abrufen relevanter Dokumente hängen von der Anzahl und Größe der Dokumente ab, die nach Abschluss der Suchphase abgerufen werden.
In der folgenden Tabelle sind die Kosten für die Ausführung von Volltextsuchanfragen für einen E-Commerce-Produktkatalog für eine Gärtnerei aufgeführt. In diesem Beispiel wird von einer Sammlung mit 200.000 Produkteinträgen ausgegangen, wobei jedes Dokument mit einem Produkteintrag 2 KiB groß ist und der entsprechende Textsuchindex etwa 100 MiB groß ist.
| Abfrage | Codebeispiel | Geschätzte verbrauchte Leseeinheiten pro Abfrage | Geschätzte Kosten (Region: us-central1 in USD) |
|---|---|---|---|
| Suchen Sie nach einem seltenen Produkt „dry water stack flat tray“. Es werden drei Dokumente abgerufen. | |
10 Leseeinheiten insgesamt Basierend auf 7 Einheiten für die Volltextsuche und 3 zusätzlichen Einheiten für die zurückgegebenen Dokumente. |
0,50 $ pro Million Abfragen |
| Suchen Sie nach allen Zitrusbäumen für den Innenbereich. Es werden 36 Dokumente abgerufen. | |
42 Leseeinheiten insgesamt Basierend auf 6 Einheiten für die Volltextsuche und 36 zusätzlichen Einheiten für die zurückgegebenen Dokumente. |
2,10 $ pro Million Abfragen |
| Suchen Sie nach Balkonpflanzgefäßen, bei denen es viele Produktübereinstimmungen gibt. Sortieren Sie die Ergebnisse nach Relevanz und beschränken Sie sie auf die 50 besten Suchergebnisse. | |
75 Leseeinheiten insgesamt Basierend auf 25 Einheiten für die Volltextsuche und 50 zusätzlichen Einheiten für die zurückgegebenen Dokumente. |
3,75 $ pro Million Abfragen |
Diese Beispiele veranschaulichen, wie sich verschiedene Abfragemuster auf die Kosten auswirken:
- Die Abfrage „dry water“ umfasst eine Wortgruppe (
"dry water") und zusätzliche Begriffe. Suchanfragen mit Wortgruppen sind komplexer, da die Abfrage-Engine die Nähe und Reihenfolge der Tokens prüfen muss. Dies trägt zu den 7 Leseeinheiten für die Suchphase bei. Da nur sehr wenige Dokumente übereinstimmen, sind die Kosten für den Dokumentenabruf gering. - Bei der Suchanfrage "indoor" "citrus" "tree" wird nach drei separaten Begriffen gesucht. Diese Suche ist pro Begriff etwas weniger komplex als eine Wortgruppen-Suche, erfordert aber dennoch das Nachschlagen mehrerer Tokens. Die Kosten für das Scannen des Suchindex sind mit 6 Leseeinheiten etwas niedriger als im Beispiel „trockenes Wasser“, aber es werden 36 Dokumente zurückgegeben, was die Gesamtkosten erhöht.
- Die Abfrage für Balkonpflanzgefäße hat mit 25 Einheiten die mit Abstand höchsten Kosten für die Volltextsuche. Das liegt vor allem daran, dass die Ergebnisse nach Relevanz (
.sort({score: {$meta: "textScore"}})) für Begriffe sortiert werden, die mit vielen Dokumenten übereinstimmen. Um die 50 relevantesten Ergebnisse zu ermitteln, muss die Abfrage-Engine alle potenziellen Übereinstimmungen für „Balkon“ oder „Pflanzgefäß“ finden, für jede einen Relevanzwert berechnen und sie dann sortieren. Dieser Bewertungs- und Sortierprozess für eine große Anzahl von Kandidaten im Index ist rechenintensiv, obwohl letztendlich nur 50 Dokumente abgerufen werden. Die Breite der Begriffe in Kombination mit dem Aufwand für die Relevanzbewertung macht die Suchphase teurer.
Geospatiale Abfragen
Die Gebühren für Geodatenabfragen hängen von der Komplexität der Abfrage, den verwendeten Bedingungen und Sortierungen sowie den Ressourcen ab, die zum Scannen aller Daten im relevanten Geodatenindex erforderlich sind.
In der folgenden Tabelle sind die Kosten für die Ausführung von Geodatenabfragen für eine Kartenanwendung aufgeführt. In diesem Beispiel wird von einer Sammlung von 1.000.000 Dokumenten ausgegangen, die POIs darstellen. Jedes POI-Dokument ist 1 KiB groß und die entsprechende Größe des Geodatenindex beträgt etwa 60 MiB.
| Abfrage | Codebeispiel | Geschätzte verbrauchte Leseeinheiten pro Abfrage | Geschätzte Kosten (Region: us-central1 in USD) |
|---|---|---|---|
| Alle POIs im Umkreis von maximal 10 km finden und 10 Übereinstimmungen zurückgeben. | |
Insgesamt 16 Leseeinheiten. Basierend auf 6 Leseeinheiten für die raumbezogene Abfrage und 10 zusätzlichen Einheiten für die zurückgegebenen Dokumente. |
0,80 $ pro Million Abfragen |
| Alle POIs mit einer maximalen Entfernung von 100 km finden und die 10 nächstgelegenen POIs aus 1.000 Übereinstimmungen zurückgeben | |
19 Leseeinheiten insgesamt. Basierend auf 9 Leseeinheiten für die raumbezogene Abfrage und 10 zusätzlichen Einheiten für die zurückgegebenen Dokumente. |
0,95 $ pro Million Abfragen |
Diese Beispiele veranschaulichen, wie sich verschiedene Abfragemuster auf die Kosten auswirken:
- Abfrage mit 10 km Radius: Bei dieser Abfrage wird ein kleineres geografisches Gebiet gescannt. Da nur 10 Übereinstimmungen innerhalb dieses 10-km-Radius gefunden werden, muss die Abfrage-Engine weniger Arbeit leisten, um diese Punkte zu identifizieren und nach Entfernung zu sortieren (wie es
$nearimplizit tut). Dies führt zu niedrigeren Indexscankosten von 6 Leseeinheiten. - Abfrage mit einem Radius von 100 km: Diese Abfrage deckt einen viel größeren Bereich ab. Die Abfrage findet 1.000 potenzielle Übereinstimmungen im Umkreis von 100 km. Um die Anfrage für die 10 nächstgelegenen Punkte zu erfüllen, muss die Abfrage-Engine Entfernungen berechnen und eine viel größere Anzahl von Kandidaten (bis zu 1.000 Punkte) im Index sortieren. Diese zusätzliche Rechenarbeit, bei der viel mehr Punkte gesichtet und eingestuft werden, ist der Grund, warum die Kosten für die raumbezogene Abfrage mit 9 Leseeinheiten höher sind als bei der 10-km-Abfrage, obwohl auch nur 10 Dokumente zurückgegeben werden.
Punktlesevorgänge
Beispiel für die Abrechnung von Punktlesevorgängen:
- Punktlesevorgang eines einzelnen 1-KiB-Dokuments. Verbraucht: 1 Leseeinheit
- Punktlesevorgang eines einzelnen 4-KiB-Dokuments. Verbraucht: 1 Leseeinheit
- Punktlesevorgang eines einzelnen 1-MiB-Dokuments. Verbraucht: 256 Leseeinheiten
- Punktlesevorgang von 100 Dokumenten mit jeweils 1 KiB. Verbraucht: 100 Leseeinheiten
Scannen
Die folgenden Beispiele umfassen Szenarien, in denen Dokumente oder Indexeinträge gescannt werden.
Dokumente scannen
- Abfrage, die 100 Dokumente mit jeweils 1 KiB scannt. Verbraucht: 25 Leseeinheiten
Indexe scannen
Die Scankosten in Byte sind unabhängig davon, ob ein Dokument oder ein Index gescannt wird. Indexeinträge sind jedoch oft kleiner. Daher sind sie oft eine kostengünstigere Möglichkeit, Daten zu scannen.
- Abfrage, die 100 Indexeinträge mit jeweils 1 KiB scannt. Verbraucht: 25 Leseeinheiten.
- Abfrage, die 100 Indexeinträge mit jeweils 128 Byte scannt. Verbraucht: 4 Leseeinheiten.
Mindestgröße für Dokumente oder Indexeinträge
In bestimmten Situationen ist es möglicherweise nicht erforderlich, den Inhalt eines Dokuments oder Indexeintrags zu lesen, um eine Abfrage zu erfüllen. Dazu gehören einfache Zählabfragen, z. B. die Gesamtzahl der Dokumente in einer Sammlung. In diesen Fällen fallen pro gescanntem Element Mindestkosten von 32 Byte an.
- Anzahl der Dokumente in einer Sammlung zählen. Die Abfrage scannt 1.000 Elemente in der Sammlung. Verbraucht: 8 Leseeinheiten.
Kombination aus Scans und Punktlesevorgängen
Viele Abfragen führen eine Kombination aus Scans und Punktlesevorgängen aus, um einen Vorgang zu erfüllen.
- Abfrage, die 128 Indexeinträge mit jeweils 256 Byte scannt und einen Punktlesevorgang für 128 Dokumente mit jeweils 4 KiB ausführt. Verbraucht: 136 Leseeinheiten, bestehend aus:
- 128 Leseeinheiten für Punktlesevorgänge
- 8 Leseeinheiten für Indexscans
Query Explain
Mit Query Explain können Sie nachvollziehen, wie die Datenbank Ihre Abfragen ausführt. Anhand der bereitgestellten Details können Sie Ihre Abfragen optimieren.
Bei der Verwendung von Query Explain fallen die folgenden Kosten an:
- Query Explain, das die Abfrage ausführt: Es fallen Abfragekosten an.
- Query Explain mit der Option „Nur Plan“. Verbraucht: 1 Leseeinheit (Mindestkosten einer Abfrage)
Schreibvorgänge
Schreibvorgänge (Erstellen, Aktualisieren und Löschen) werden anhand der Größe der Dokumente und Indexe berechnet, die während des Vorgangs erstellt, geändert oder gelöscht werden. Schreibvorgänge verbrauchen Schreibeinheiten. Schreibeinheiten werden in 1-KiB-Tranchen berechnet.
Bei einfachen Schreibvorgängen wie dem Aktualisieren nach Dokument-ID fallen nur die Kosten für die Schreibvorgänge an. Bei Schreibvorgängen, für die eine Abfrage erforderlich ist, fallen zusätzlich die mit der Abfrage verbundenen Lesekosten an.
Betrachten Sie die folgenden Beispiele.
Erstellt
- Erstellen Sie ein neues 10-KiB-Dokument ohne Indexe. Verbraucht: 10 Schreibeinheiten
- Erstellen Sie ein 1-KiB-Dokument mit einem Indexeintrag von 256 Byte in der Sammlung. Verbraucht: 2 Schreibeinheiten
Updates
- Suchen Sie ein 10-KiB-Dokument nach Dokument-ID und aktualisieren Sie es ohne Indexe für die Sammlung. Verbraucht: 10 Schreibeinheiten
- Suchen Sie ein 1-KiB-Dokument anhand der Dokument-ID und aktualisieren Sie ein Feld mit einem Indexeintrag von 256 Byte. Verbraucht: 3 Schreibeinheiten. Hinweis: Das Aktualisieren eines Indexeintrags in dieser Situation verbraucht zwei Schreibeinheiten – eine zum Löschen und eine zum Neuerstellen des Indexeintrags.
- Suchen Sie ein 1-KiB-Dokument nach Dokument-ID und aktualisieren Sie nichts (keine Änderungen). Verbraucht: 1 Schreibeinheit (die Mindestschreibkosten)
- Alle 1-KiB-Dokumente in einer Sammlung abfragen, wobei 1.000 Dokumente gescannt werden, und ein neues 256-Byte-Feld ohne Indexe in die Sammlung einfügen: 1.000 Leseeinheiten und 1.000 Schreibeinheiten.
Löschvorgänge
- Löschen eines 1-KiB-Dokuments mit einem Index für die Sammlung. Verbraucht: 2 Schreibeinheiten
- Löschen Sie ein 1-KiB-Dokument, das keine Indexe für die Sammlung hat. Verbraucht: 1 Schreibeinheit
Index-Builds
Für Indexerstellungen werden die Indexeinträge in Rechnung gestellt, die während des Erstellungsvorgangs erstellt oder geändert werden. Diese Kosten fallen immer an, wenn eine Indexdefinition hinzugefügt oder entfernt wird. Die Indexeinträge werden identisch mit Schreibvorgängen abgerechnet, wobei 1 Schreibeinheit pro 1 KiB anfällt.
- Erstellen Sie einen neuen Index für eine Sammlung mit 500 Dokumenten. Die erstellten Indexeinträge sind jeweils 1 KiB groß. Verbraucht 500 Schreibeinheiten.
- Löschen eines vorhandenen Index für eine Sammlung mit 500 Dokumenten, wobei die gelöschten Indexeinträge jeweils 1 KiB groß sind. Verbraucht 500 Schreibeinheiten.