Na tej stronie opisujemy, jak pobierać informacje o wykonaniu zapytania.
Używanie funkcji Wyjaśnij zapytanie
Funkcja Wyjaśnij zapytanie pozwala zrozumieć, jak są wykonywane Twoje zapytania. Dzięki temu możesz uzyskać szczegółowe informacje, które pomogą Ci zoptymalizować zapytania.
Funkcji Wyjaśnij zapytanie możesz używać w konsoli Google Cloud.
Konsola
Wykonaj zapytanie w edytorze zapytań i otwórz kartę Wyjaśnienie:
-
W konsoli Google Cloud otwórz stronę Bazy danych.
- Na liście baz danych wybierz bazę danych Cloud Firestore. Konsola Google Cloud otworzy Eksplorator Firestore dla tej bazy danych.
- Wpisz zapytanie w edytorze zapytań i kliknij Uruchom.
-
Kliknij kartę Wyjaśnienie , aby wyświetlić dane wyjściowe analizy zapytania.
Analiza
Dane wyjściowe funkcji Wyjaśnij zapytanie zawierają 2 główne komponenty – statystyki podsumowujące i drzewo wykonania. Jako przykład rozważmy to zapytanie:
db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)
Statystyki podsumowujące
U góry wyjaśnionych danych wyjściowych znajduje się podsumowanie statystyk wykonania. Na podstawie tych statystyk możesz określić, czy zapytanie ma długi czas oczekiwania lub wysoki koszt. Zawierają one też statystyki pamięci, które informują, jak blisko limitów pamięci jest Twoje zapytanie do limitów pamięci.
Execution:
results returned: 2
request peak memory usage: 20.25 KiB (20,736 B)
data bytes read: 148 B
entity row scanned: 2
Billing:
read units: 1
Drzewo wykonania
Drzewo wykonania opisuje wykonanie zapytania jako serię węzłów. Węzły dolne (węzły liści) pobierają dane z warstwy pamięci masowej, która przechodzi przez drzewo, aby wygenerować odpowiedź na zapytanie.
Szczegółowe informacje o poszczególnych węzłach wykonania, znajdziesz w sekcji Informacje o wykonaniu.
Więcej informacji o tym, jak używać tych informacji do optymalizacji zapytań, zobacz Optymalizowanie wykonywania zapytań.
Oto przykład drzewa wykonania:
Tree:
• Compute
| $out_1: map_set($record_1, "__name__", $__name___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 2
| latency: 5.96 ms (local <1 ms)
|
└── • Compute
| $__name___1: map_get($record_1, "__key__")
|
| Execution:
| records returned: 2
| latency: 5.88 ms (local <1 ms)
|
└── • MajorSort
| fields: [$v_1 ASC]
| output: [$record_1]
| limit: 100
|
| Execution:
| records returned: 2
| latency: 5.86 ms (local <1 ms)
| peak memory usage: 20.25 KiB (20,736 B)
|
└── • Compute
| $v_1: map_get($record_1, "status")
|
| Execution:
| records returned: 2
| latency: 5.23 ms (local <1 ms)
|
└── • TableScan
source: /users
order: UNDEFINED
properties: *
row range: (-∞..+∞)
output record: $record_1
variables: [$record_1]
Execution:
records returned: 2
latency: 4.68 ms
records scanned: 2
data bytes read: 148 B
Co dalej?
- Więcej informacji o węzłach drzewa wykonania znajdziesz w sekcji Informacje o wykonywaniu zapytań.
- Więcej informacji o optymalizacji zapytań znajdziesz w artykule Optymalizowanie wykonywania zapytań.