На этой странице описано, как получить информацию о выполнении запроса при его выполнении.
Используйте запрос Explain.
С помощью функции Query Explain вы можете понять, как выполняются ваши запросы. Это предоставит подробную информацию, которую вы сможете использовать для оптимизации ваших запросов .
Вы можете использовать Query Explain через консоль Google Cloud.
Консоль
Выполните запрос в редакторе запросов и откройте вкладку «Пояснение» :
В консоли Google Cloud перейдите на страницу «Базы данных» .
- Из списка баз данных выберите базу данных Cloud Firestore . Консоль Google Cloud откроет Firestore Explorer для этой базы данных.
- Введите запрос в редакторе запросов и нажмите «Выполнить» .
Чтобы просмотреть результаты анализа запроса, нажмите вкладку «Пояснение» .
Анализ
Результат выполнения команды Query Explain содержит два основных компонента: сводную статистику и дерево выполнения. Рассмотрим следующий запрос в качестве примера:
db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)
Сводная статистика
В верхней части пояснительного вывода содержится сводка статистики выполнения. Используйте эту статистику, чтобы определить, имеет ли запрос высокую задержку или стоимость. Она также содержит статистику использования памяти, которая показывает, насколько близок ваш запрос к пределам памяти .
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
Дерево выполнения
Дерево выполнения описывает выполнение запроса как последовательность узлов. Нижние узлы (листовые узлы) извлекают данные из уровня хранения, который перемещается вверх по дереву для генерации ответа на запрос.
Подробную информацию о каждом узле выполнения см. в справочнике по выполнению .
Подробную информацию о том, как использовать эти данные для оптимизации запросов, см. в разделе «Оптимизация выполнения запросов» .
Ниже приведён пример дерева выполнения:
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
Что дальше?
- Чтобы узнать больше об узлах дерева выполнения, см. справочник по выполнению запросов .
- Чтобы узнать, как оптимизировать запросы, см. раздел «Оптимизация выполнения запросов» .