Na tej stronie znajdziesz przykłady obliczania jednostek rozliczeniowych w najczęstszych przypadkach. Pamiętaj, że ilość przetworzonych danych w poszczególnych zapytaniach może się różnić w zależności od takich czynników jak plan zapytania, kształt danych i dostępne indeksy.
Aby lepiej zrozumieć koszt i wydajność konkretnych zapytań, zalecamy korzystanie z funkcji Wyjaśnienie zapytania.
Operacje odczytu
Większość operacji odczytu polega na odczytaniu konkretnego dokumentu lub skanowaniu zakresu danych na podstawie identyfikatora. Operacje odczytu zużywają jednostki odczytu. Zobacz przykłady poniżej.
Wyszukiwanie pełnotekstowe
Opłaty za zapytania dotyczące wyszukiwania pełnotekstowego są rozróżniane na koszt wyszukiwania w indeksie tekstowym i koszt pobierania dokumentów. Koszt wyszukiwania w indeksie tekstowym zależy od złożoności zapytania i ilości danych przeskanowanych w indeksie w celu znalezienia wyników. Na ten koszt wpływają m.in. liczba i rodzaj wyszukiwanych haseł (np. słowa, frazy), to, czy stosowane jest ocenianie trafności, oraz liczba wpisów w indeksie, które należy sprawdzić. Koszt pobierania odpowiednich dokumentów zależy od liczby i rozmiaru dokumentów pobranych po zakończeniu fazy wyszukiwania.
Poniższa tabela przedstawia opłaty związane z wykonywaniem zapytań dotyczących wyszukiwania pełnotekstowego w katalogu produktów e-commerce dla szkółki roślin. Ten przykład zakłada kolekcję 200 000 informacji o produktach, z których każda ma 2 KiB, oraz odpowiadający jej indeks wyszukiwania tekstowego o rozmiarze około 100 MiB.
| Zapytanie | Przykładowy kod | Szacunkowa liczba jednostek odczytu wykorzystanych na zapytanie | Szacowane koszty (region: us-central1 w USD) |
|---|---|---|---|
| Wyszukiwanie rzadkiego produktu „dry water” stack flat tray, które zwraca 3 dokumenty. | |
10 jednostek odczytu Na podstawie 7 jednostek za wyszukiwanie pełnotekstowe i 3 dodatkowych jednostek za zwrócone dokumenty. |
0,50 USD za milion zapytań |
| Wyszukaj wszystkie drzewa cytrusowe do uprawy w pomieszczeniach. W wyniku tego wyszukiwania otrzymasz 36 dokumentów. | |
42 jednostki odczytu Na podstawie 6 jednostek za wyszukiwanie pełnotekstowe i 36 dodatkowych jednostek za zwrócone dokumenty. |
2,10 USD za milion zapytań |
| Wyszukaj doniczki balkonowe, w przypadku których jest wiele pasujących produktów. Posortuj wyniki według trafności i ogranicz je do 50 najlepszych wyników wyszukiwania. | |
75 jednostek odczytu Na podstawie 25 jednostek w przypadku wyszukiwania pełnotekstowego i 50 dodatkowych jednostek w przypadku zwróconych dokumentów. |
3,75 USD za milion zapytań |
Przykłady pokazują, jak różne wzorce zapytań wpływają na koszty:
- Zapytanie „sucha woda” zawiera frazę (
"dry water") i dodatkowe słowa. Wyszukiwania frazowe są bardziej złożone, ponieważ silnik zapytań musi sprawdzać bliskość i kolejność tokenów, co przyczynia się do 7 jednostek odczytu w fazie wyszukiwania. Ponieważ pasuje bardzo mało dokumentów, koszt pobierania dokumentów jest niski. - Zapytanie „wewnętrzny” „cytrusowy” „drzewo” wyszukuje 3 osobne hasła. Wyszukiwanie w dopasowaniu przybliżonym jest nieco mniej złożone niż wyszukiwanie w dopasowaniu do wyrażenia, ale nadal wymaga wyszukania wielu tokenów. Ma nieco niższy koszt skanowania indeksu wyszukiwania (6 jednostek odczytu) niż w przypadku przykładu „sucha woda”, ale zwraca 36 dokumentów, co zwiększa łączny koszt.
- Zapytanie balcony planter query ma zdecydowanie najwyższy koszt wyszukiwania pełnotekstowego, który wynosi 25 jednostek. Dzieje się tak głównie dlatego, że żąda sortowania wyników według trafności (
.sort({score: {$meta: "textScore"}})) w przypadku terminów, które pasują do wielu dokumentów. Aby określić 50 najtrafniejszych wyników, wyszukiwarka musi znaleźć wszystkie potencjalne dopasowania do słów „balkon” lub „doniczka”, obliczyć dla każdego z nich wynik trafności, a następnie je posortować. Ten proces oceniania i sortowania dużej liczby kandydatów w indeksie jest wymagający obliczeniowo, mimo że ostatecznie pobieranych jest tylko 50 dokumentów. Szeroki zakres terminów w połączeniu z narzutem związanym z ocenianiem trafności sprawia, że faza wyszukiwania jest droższa.
Zapytania geoprzestrzenne
Opłaty za zapytania geoprzestrzenne zależą od złożoności zapytania, zastosowanych warunków i sortowania oraz zasobów wymaganych do przeskanowania wszystkich danych w odpowiednim indeksie geoprzestrzennym.
W tabeli poniżej przedstawiono opłaty związane z wykonywaniem zapytań geoprzestrzennych w aplikacji do map. W tym przykładzie założono kolekcję 1 000 000 dokumentów reprezentujących punkty orientacyjne, przy czym każdy dokument punktu orientacyjnego ma rozmiar 1 KiB, a odpowiadający mu indeks geoprzestrzenny ma rozmiar około 60 MiB.
| Zapytanie | Przykładowy kod | Szacunkowa liczba jednostek odczytu wykorzystanych na zapytanie | Szacowane koszty (region: us-central1 w USD) |
|---|---|---|---|
| Znajdź wszystkie interesujące miejsca w promieniu maksymalnie 10 km i zwróć 10 wyników. | |
16 jednostek odczytu. Na podstawie 6 jednostek odczytu w przypadku zapytania geoprzestrzennego i 10 dodatkowych jednostek w przypadku zwróconych dokumentów. |
0,80 USD za milion zapytań |
| Znajdź wszystkie interesujące miejsca w promieniu 100 km i zwróć 10 najbliższych z 1000 wyników. | |
19 jednostek odczytu łącznie. Na podstawie 9 jednostek odczytu w przypadku zapytania geoprzestrzennego i 10 dodatkowych jednostek w przypadku zwróconych dokumentów. |
0,95 USD za milion zapytań |
Przykłady pokazują, jak różne wzorce zapytań wpływają na koszty:
- Zapytanie dotyczące promienia 10 km: to zapytanie skanuje mniejszy obszar geograficzny. Ponieważ w promieniu 10 km znajduje tylko 10 pasujących punktów, wyszukiwarka musi wykonać mniej pracy, aby zidentyfikować i uporządkować te punkty według odległości (jak to robi
$near). Dzięki temu koszt skanowania indeksu wynosi 6 jednostek odczytu. - Zapytanie o promieniu 100 km: to zapytanie obejmuje znacznie większy obszar. Zapytanie znajduje 1000 potencjalnych wyników w promieniu 100 km. Aby spełnić żądanie dotyczące 10 najbliższych punktów, silnik zapytań musi obliczyć odległości i posortować znacznie większy zbiór kandydatów (do 1000 punktów) w indeksie. Dodatkowa praca obliczeniowa związana z przeszukiwaniem i rankingowaniem znacznie większej liczby punktów jest powodem, dla którego koszt zapytania geoprzestrzennego jest wyższy i wynosi 9 jednostek odczytu w porównaniu z zapytaniem o odległość 10 km, mimo że zwraca ono tylko 10 dokumentów.
Odczyty punktowe
Przykładowe rozliczenie odczytów punktowych:
- Odczyt punktowy pojedynczego dokumentu o rozmiarze 1 KiB. Zużycie: 1 jednostka odczytu
- Odczyt punktowy pojedynczego dokumentu o rozmiarze 4 KiB. Zużycie: 1 jednostka odczytu
- Odczyt punktowy pojedynczego dokumentu o rozmiarze 1 MiB. Zużywa: 256 jednostek odczytu
- Odczyt punktowy 100 dokumentów, po 1 KiB każdy. Zużycie: 100 jednostek odczytu
Skanowanie
Poniższe przykłady ilustrują scenariusze skanowania dokumentów lub wpisów w indeksie.
Skanowanie dokumentów
- Zapytanie, które skanuje 100 dokumentów o rozmiarze 1 KiB każdy. Zużycie: 25 jednostek odczytu
Skanowanie indeksów
Koszt skanowania w bajtach jest taki sam niezależnie od tego, czy skanowany jest dokument czy indeks. Jednak wpisy indeksu są często mniejsze. Dzięki temu mogą one stanowić bardziej opłacalny sposób skanowania danych.
- Zapytanie, które skanuje 100 wpisów indeksu, po 1 KiB każdy. Zużywa: 25 jednostek odczytu.
- Zapytanie, które skanuje 100 wpisów indeksu, po 128 bajtów każdy. Zużywa: 4 jednostki odczytu.
Minimalny rozmiar dokumentu lub wpisu w indeksie
W niektórych sytuacjach do udzielenia odpowiedzi na zapytanie nie jest konieczne odczytywanie zawartości dokumentu ani wpisu w indeksie. Obejmuje to proste zapytania zliczające, np. zliczanie łącznej liczby dokumentów w kolekcji. W takich sytuacjach za każdy zeskanowany produkt obowiązuje minimalny koszt w wysokości 32 bajtów.
- Oblicz liczbę dokumentów w kolekcji. Zapytanie skanuje 1000 elementów w kolekcji. Zużywa: 8 jednostek odczytu.
Kombinacja skanowania i odczytów punktowych
Wiele zapytań wykonuje kombinację skanowania i odczytów punktowych, aby zrealizować operację.
- Zapytanie, które skanuje 128 pozycji indeksu, po 256 bajtów każda, i wykonuje odczyt punktowy 128 dokumentów, po 4 KiB każdy. Zużywa 136 jednostek odczytu, na które składają się:
- 128 jednostek odczytu w przypadku odczytów punktowych
- 8 jednostek odczytu w przypadku skanowania indeksu
Wyjaśnienie zapytania
Wyjaśnienie zapytania pomaga zrozumieć, jak baza danych wykonuje zapytania. Podane szczegóły mogą pomóc Ci zoptymalizować zapytania.
W przypadku korzystania z funkcji Wyjaśnienie zapytania obowiązują te koszty:
- Wyjaśnienie zapytania, które wykonuje zapytanie: obowiązuje koszt zapytania.
- Funkcja Query Explain korzystająca tylko z planu. Zużywa: 1 jednostkę odczytu (minimalny koszt zapytania)
Operacje zapisu
Operacje zapisu (tworzenie, aktualizowanie i usuwanie) są rozliczane na podstawie rozmiaru dokumentów i indeksów tworzonych, modyfikowanych lub usuwanych podczas operacji. Operacje zapisu zużywają jednostki zapisu. Jednostki zapisu są obliczane w transzach po 1 KiB.
Proste operacje zapisu, takie jak aktualizacja według identyfikatora dokumentu, wiążą się tylko z kosztem zapisu. Operacje zapisu, które wymagają wykonania zapytania, aby można było je zrealizować, będą dodatkowo generować koszty odczytu związane z tym zapytaniem.
Zobacz przykłady poniżej.
Tworzy
- Utwórz nowy dokument o rozmiarze 10 KiB bez indeksów. Zużywa: 10 jednostek zapisu
- Utwórz w kolekcji dokument o rozmiarze 1 KiB z 1 wpisem indeksu o rozmiarze 256 bajtów. Zużywa: 2 jednostki zapisu
Aktualizacje
- Znajdź dokument o rozmiarze 10 KiB według identyfikatora dokumentu i zaktualizuj go bez indeksów w kolekcji. Zużywa: 10 jednostek zapisu
- Znajdź dokument o rozmiarze 1 KiB według identyfikatora dokumentu i zaktualizuj 1 pole z 1 wpisem indeksu o rozmiarze 256 bajtów. Zużywa: 3 jednostki zapisu. Uwaga: zaktualizowanie wpisu indeksu w tej sytuacji zużywa 2 jednostki zapisu – jedną na usunięcie i jedną na ponowne utworzenie wpisu indeksu.
- Znajdź dokument o rozmiarze 1 KiB według identyfikatora dokumentu i nie wprowadzaj żadnych zmian. Zużywa: 1 jednostkę zapisu (minimalny koszt zapisu)
- Wykonać zapytanie dotyczące wszystkich dokumentów o rozmiarze 1 KiB w kolekcji, co spowoduje przeskanowanie 1000 dokumentów, i wstawić nowe pole o rozmiarze 256 bajtów bez indeksów w kolekcji: 1000 jednostek odczytu i 1000 jednostek zapisu.
Usunięcia
- Usuń dokument o rozmiarze 1 KiB, który ma 1 indeks w kolekcji. Zużywa: 2 jednostki zapisu
- Usuń dokument o rozmiarze 1 KiB, który nie ma indeksów w kolekcji. Zużywa: 1 jednostkę zapisu
Kompilacje indeksów
Za tworzenie indeksów pobieramy opłaty za wpisy w indeksie utworzone lub zmodyfikowane podczas operacji tworzenia. Koszty te są ponoszone za każdym razem, gdy dodawana lub usuwana jest definicja indeksu. Opłaty za wpisy indeksu są naliczane tak samo jak za zapisy, czyli 1 jednostka zapisu za 1 KiB.
- Utwórz nowy indeks dla kolekcji zawierającej 500 dokumentów, a każdy utworzony wpis indeksu ma rozmiar 1 KiB. Zużywa 500 jednostek zapisu.
- Usunięcie istniejącego indeksu dla kolekcji zawierającej 500 dokumentów, przy czym każdy usunięty wpis indeksu ma rozmiar 1 KiB. Zużywa 500 jednostek zapisu.