Как анализировать статистику эффективности запросов

На этой странице описано, как использовать панель Query Insights для обнаружения и анализа производительности запросов.

Обзор статистики запросов

Используйте панель мониторинга Query Insights, чтобы отслеживать запросы, связанные с показателями. На основе этих показателей можно определить наиболее часто используемые запросы и запросы с высокой задержкой, которые могут потребовать оптимизации. Используйте панель мониторинга Query Insights, чтобы:

  • Оптимизация эффективности запросов. Выявляйте запросы с высокой задержкой, которые могут требовать оптимизации.
  • Управление стоимостью запросов. Выявляйте дорогостоящие запросы и оптимизируйте их, чтобы снизить расходы.
  • Отслеживание статистики запросов. Вы можете отслеживать статистику запросов за определенный период времени.
  • Рекомендации по индексам. Выявляйте отсутствующие или неоптимальные составные индексы и создавайте рекомендуемые индексы прямо на панели управления (версия Enterprise).

Данные Query Insights

Query Insights включает данные из следующих методов API:

  • find
  • aggregate

Вы можете просматривать данные о запросах, в которых используются эти методы, для определенного проекта, базы данных и периода времени от 10 минут до 30 дней. Данные по запросам с одинаковой структурой собираются в рамках одного нормализованного запроса.

Статистика запросов возвращает следующую информацию о запросе:

Нормализованный текст запроса Структура запроса, представленная в виде текста.
Количество выполнений Количество выполнений за выбранный период времени.
Количество ошибок Количество ошибок за выбранный период времени.
Средняя продолжительность выполнения (мс) Среднее время в миллисекундах, которое потребовалось базе данных для обработки запроса.
Среднее количество возвращенных результатов Количество результатов, возвращенных запросом. Результаты включают документы, идентификаторы коллекций и агрегированные сегменты.
Среднее количество отсканированных документов Количество документов, отсканированных в запросе.
Среднее количество просканированных записей в индексе Количество записей в индексе, которые были проверены для выполнения запроса.
Загрузка по среднему времени Данные, которые помогают отфильтровать самые популярные запросы по средней задержке.
Нагрузка по общему количеству операций чтения (оплачиваемых) Данные, которые помогают отфильтровать самые популярные запросы на основе общего количества платных операций чтения.
Рекомендации по индексированию Рекомендуемые составные индексы, используемые индексы и расчетное влияние рабочей нагрузки на запросы в базах данных Enterprise.

Детализация и хранение данных

Детализация данных зависит от указанной продолжительности:

  • 10 минут для интервалов до 4 дней назад;
  • 1 час для интервалов до 30 дней назад;

Максимальный срок хранения данных для Query Insights составляет 30 дней. Данные с разбивкой по 10 минут хранятся четыре дня, а с разбивкой по часам – 30 дней.

Как посмотреть статистику запросов

Консоль Firebase
  1. Чтобы посмотреть статистику запросов для базы данных Cloud Firestore, откройте панель Статистика запросов в консоли Google Cloud.
  2. В консоли Firebase перейдите на страницу База данных Firestore.

    Перейти к базе данных Firestore

  3. Выберите базу данных из списка.
  4. В списке вкладок выберите Статистика запросов.

    Чтобы найти основные запросы по задержке или количеству операций чтения, нажмите Задержка или Операции чтения.

Рекомендации по индексированию

Рекомендации по индексам для Query Insights автоматически определяют отсутствующие или неоптимальные конфигурации составных индексов для часто выполняемых форм запросов в базах данных Firestore Enterprise.

В версии Firestore Enterprise запросы могут выполняться даже без соответствующих составных индексов, что может привести к медленному сканированию всей коллекции или операциям сортировки в памяти. Панель Query Insights анализирует статистику выполнения запросов и предлагает составные индексы, которые позволяют оптимизировать задержку запросов и уменьшить количество сканируемых документов, за которые взимается плата.

Как работают рекомендации по индексам

Офлайн-конвейер периодически оценивает самые популярные запросы:

  • Анализ структуры запросов. Извлечение предикатов равенства, сортировки и диапазона из часто выполняемых запросов.
  • Создание индекса кандидатов. Создает определения потенциальных составных индексов с помощью эвристики упорядочивания индексов (Равенство > Сортировка > Диапазон).
  • Оценка оптимизатора. Внедряет индексы-кандидаты в модель затрат механизма запросов, чтобы сравнить базовые затраты на выполнение запроса с гипотетическими планами выполнения с индексами.
  • Рейтинг влияния на рабочую нагрузку. Рекомендуемые индексы ранжируются по уровням влияния на основе общей расчетной экономии затрат на рабочую нагрузку:
    • HIGH: Converts full collection scans to selective index seeks, significantly reducing document reads and execution latency.
    • MEDIUM – исключает ресурсоемкие операции, такие как сортировка в памяти, за счет предоставления предварительно отсортированных результатов индекса.
    • Низкий. Незначительные улучшения.
Чтобы посмотреть рекомендации по индексам и создать предложенные индексы в консоли Firebase, выполните следующие действия:

  1. В консоли Firebase перейдите на страницу База данных Firestore.

    Перейти к базе данных Firestore

  2. В списке баз данных выберите базу данных Enterprise.

  3. Откройте вкладку Статистика запросов.

  4. В таблице запросов найдите шаблон запроса с рекомендациями и нажмите Посмотреть рекомендации в строке или всплывающем окне.

  5. В диалоговом окне рекомендации по индексу проверьте определение составного индекса, порядок полей и уровень предполагаемого влияния на рабочую нагрузку (ВЫСОКИЙ, СРЕДНИЙ или НИЗКИЙ).

  6. Нажмите Сохранить. Откроется панель Длительные операции, на которой можно отслеживать ход создания индекса.

  7. После завершения сборки индекс появится на вкладке Индексы, а индикатор рекомендации исчезнет из строки запроса.

Какие версии поддерживаются

Рекомендации по индексам поддерживаются только для баз данных Firestore Enterprise. Базы данных Standard Edition не поддерживаются.

Ограничения

  • Данные в статистике запросов обновляются с задержкой в один-два часа.
  • Рекомендации по индексам генерируются периодически на основе исторических данных запросов, а не в режиме реального времени.
  • Рекомендации по индексам предлагают новые составные индексы; они не предлагают изменять или удалять существующие индексы.
  • Автоматическое создание индексов не поддерживается. Рекомендуемые индексы необходимо создавать вручную.
  • При нормализации запроса литеральные значения заменяются плейсхолдерами. Рекомендации по индексам основаны на нормализованных шаблонах запросов, а не на конкретных значениях времени выполнения.
  • Для оценки стоимости используются эвристические алгоритмы, а не выборка данных в реальном времени. Рекомендуемые индексы могут не повысить производительность в каждом сценарии, а создание индекса увеличивает накладные расходы на запись и хранение.

Цены

За использование статистики запросов и рекомендаций по индексам дополнительная плата не взимается.

Необходимые роли

Чтобы получить разрешения, необходимые для просмотра панели статистики запросов и создания рекомендуемых индексов, попросите администратора назначить вам следующие роли IAM в проекте:

Эти стандартные роли содержат разрешения datastore.insights.get и datastore.indexes.create.

Эти разрешения также можно получить с помощью специальных ролей или других стандартных ролей.

Дальнейшие действия