Относится только к версии Cloud Firestore Enterprise. |
На этой странице приведены примеры расчета единиц тарификации в некоторых наиболее распространённых сценариях. Обратите внимание, что каждый запрос может обрабатывать разные данные в зависимости от таких факторов, как план запроса, форма данных и доступные индексы.
Мы рекомендуем использовать функцию объяснения запроса , чтобы лучше понять стоимость и производительность ваших конкретных запросов.
Операции чтения
Большинство операций чтения подразумевают либо точечное чтение определённого документа, либо сканирование массива данных по идентификатору. Операции чтения используют единицы чтения. Единицы чтения рассчитываются траншами по 4 КБ. См. примеры ниже.
Точка читает
Пример выставления счета за считанные точки:
- Точечное чтение одного документа размером 1 КБ. Затрачивается: 1 единица чтения.
- Точечное чтение одного документа размером 4 КБ. Затрачивается: 1 единица чтения.
- Точечное чтение одного документа размером 1 МБ. Затрачивается: 256 единиц чтения.
- Точечное чтение 100 документов по 1 КиБ каждый. Расход: 100 единиц чтения.
Сканирование
В следующих примерах приведены сценарии сканирования документов или записей индекса.
Сканирование документов
- Запрос, сканирующий 100 документов по 1 КБ каждый. Затрачивается: 25 единиц чтения.
Сканирование индексов
Стоимость сканирования (в байтах) одинакова независимо от того, сканируется ли документ или индекс. Однако записи индекса часто имеют меньший размер. В результате они часто могут обеспечить более экономичный способ сканирования данных.
- Запрос, сканирующий 100 записей индекса по 1 КБ каждая. Затрачивается: 25 единиц чтения.
- Запрос, сканирующий 100 записей индекса по 128 байт каждая. Затрачивается: 4 единицы чтения.
Минимальный размер документа или записи указателя
В некоторых ситуациях для выполнения запроса может не потребоваться чтение содержимого документа или записи индекса. Это относится к простым запросам на подсчёт, например, подсчёт общего количества документов в коллекции. В таких случаях минимальная стоимость сканирования одного элемента составляет 32 байта.
- Подсчитайте количество документов в коллекции. Запрос сканирует 1000 элементов коллекции. Затрачивается: 8 единиц чтения.
Комбинация сканирования и точечных считываний
Многие запросы выполняют комбинацию сканирования и точечного чтения для выполнения операции.
- Запрос, который сканирует 128 записей индекса по 256 байт каждая и выполняет точечное чтение 128 документов по 4 КБ каждый. Затрачивается: 136 единиц чтения, включающих:
- 128 единиц чтения для точечных чтений
- 8 единиц чтения для сканирования индекса
Запрос Объяснить
Query Explain помогает понять, как база данных выполняет ваши запросы. Эта информация поможет вам оптимизировать запросы.
При использовании Query Explain применяются следующие расценки:
- Запрос Объяснение, которое выполняет запрос: применяется стоимость запроса.
- Запрос «Объяснение» с использованием опции «Только план». Затраты: 1 единица чтения (минимальная стоимость запроса).
Операции записи
Операции записи (создание, обновление и удаление) тарифицируются в зависимости от размера документов и индексов, создаваемых, изменяемых или удаляемых в ходе операции. Операции записи потребляют единицы записи. Единицы записи рассчитываются траншами по 1 КБ.
Простые операции записи, такие как обновление по идентификатору документа, влекут за собой только стоимость записи. Операции записи, требующие выполнения запроса, влекут за собой дополнительную стоимость чтения, связанного с запросом.
См. следующие примеры.
Создает
- Создать новый документ размером 10 КБ без индексов. Затраты: 10 единиц записи.
- Создайте документ размером 1 КБ с одной записью индекса размером 256 байт в коллекции. Потребляет: 2 единицы записи.
Обновления
- Найти документ размером 10 КБ по идентификатору и обновить его без индексов в коллекции. Затраты: 10 единиц записи.
- Найти документ размером 1 КБ по идентификатору документа и обновить 1 поле с помощью 1 записи индекса размером 256 байт. Затраты: 3 единицы записи. Примечание: обновление записи индекса в этой ситуации потребляет 2 единицы записи: одну на удаление и одну на повторное создание записи индекса.
- Найти документ размером 1 КБ по идентификатору и ничего не обновлять (без изменений). Затраты: 1 единица записи (минимальная стоимость записи).
- Запрос всех документов размером 1 КБ в коллекции, который сканирует 1000 документов, и вставка нового поля размером 256 байт без индексов в коллекции: 1000 единиц чтения и 1000 единиц записи.
Удаляет
- Удалить документ размером 1 КБ, имеющий 1 индекс в коллекции. Затраты: 2 единицы записи.
- Удалить документ размером 1 КБ, не имеющий индексов в коллекции. Затраты: 1 единица записи.
Индекс строится
Плата за создание или изменение записей индекса взимается в процессе построения. Эти расходы возникают при каждом добавлении или удалении определения индекса. Стоимость записей индекса рассчитывается так же, как и стоимость записи, составляющей 1 единицу записи на 1 КБ.
- Создайте новый индекс для коллекции, содержащей 500 документов. Размер каждой записи индекса — 1 КБ. Потребляет 500 единиц записи.
- Удалить существующий индекс для коллекции, содержащей 500 документов. Размер удаляемых записей индекса составляет 1 КБ каждая. Затраты на запись составляют 500 единиц.