Поделиться через


Единицы запросов в Azure Cosmos DB

Azure Cosmos DB поддерживает многие интерфейсы API, такие как SQL, MongoDB, Cassandra, Gremlin и Таблицы. У каждого API есть собственный набор операций базы данных, начиная от простого считывания и записи точек и заканчивая сложными запросами. Каждая операция базы данных потребляет системные ресурсы. Потребление зависит от сложности операции.

Azure Cosmos DB нормализует стоимость всех операций базы данных с помощью единиц запросов (или единиц RUS) и измеряет затраты на основе пропускной способности (единицы запросов в секунду, ЕЗ/с).

Единица запроса — это валюта производительности, абстрагируя системные ресурсы, такие как обработка (ЦП), операции ввода-вывода в секунду и память, необходимые для выполнения операций базы данных, поддерживаемых Azure Cosmos DB. Независимо от того, является ли операция базы данных операцией записи, чтения точек или запроса, всегда измеряется в единицах ЕЗ. Например, чтение одного элемента по идентификатору и ключу секции использует одну единицу запроса. Элемент должен быть размером около 1 КБ. Этот предполагаемый размер имеет значение true для любого API, используемого с Azure Cosmos DB. Вы можете моделировать затраты на пропускную способность с помощью калькулятора емкости Azure Cosmos DB.

Обобщенная схема использования ЕЗ представлена на следующем изображении.

              Операции в базе данных потребляют единицы запроса

Чтобы обеспечить планирование пропускной способности и управление ею, Azure Cosmos DB гарантирует, что количество ЕЗ для операции базы данных над определенным набором данных является детерминированным. Вы можете проверить заголовок ответа, чтобы отслеживать количество единиц запросов, потребляемых любой операцией базы данных. Зная факторы, которые влияют на стоимость в единицах запроса, и требования приложения к пропускной способности, вы сможете обеспечить экономичность приложения.

Тип используемой учетной записи Azure Cosmos DB определяет способ оплаты за использованные ЕЗ. Существует три режима, в которых можно создать учетную запись.

  1. Подготовленный режим пропускной способности. В этом режиме вы назначаете количество единиц запросов для приложения на единицу в секунду приращения в 100 ЕЗ в секунду. Чтобы масштабировать подготовленную пропускную способность для приложения, вы можете увеличить или уменьшить количество единиц запросов в любое время с шагом в 100 ЕЗ/с. Это можно сделать программным способом или с помощью портала Azure. Вы оплачиваете почасовую оплату на основе количества подготовленных единиц запросов в секунду. Дополнительные сведения см. в статье о подготовленной пропускной способности.

  2. Бессерверный режим. В этом режиме не нужно назначать пропускную способность при создании ресурсов в учетной записи Azure Cosmos DB. В конце расчетного периода вы получаете счет за количество единиц запроса, использованных для операций базы данных. Дополнительные сведения см. в статье Бессерверная пропускная способность.

  3. Режим автомасштабирования: в этом режиме вы можете автоматически и мгновенно масштабировать пропускную способность (ЕЗ/с) базы данных или контейнера на основе его использования. Эта операция масштабирования не влияет на доступность, задержку, пропускную способность или производительность рабочей нагрузки. Этот режим хорошо подходит для критически важных рабочих нагрузок, имеющих переменные или непредсказуемые шаблоны трафика, и требуют соглашений об уровне обслуживания (СОГЛАШЕНИЯ об уровне обслуживания) для высокой производительности и масштабирования. Дополнительные сведения см. в статье Автомасштабируемая пропускная способность.

Рекомендации по оценке необходимого количества единиц запросов

При оценке количества ЕЗ, потребляемых вашей рабочей нагрузкой, учитывайте следующие факторы:

  • Размер элемента. С увеличением размера элемента также увеличивается число единиц запросов, потребляемых для чтения и записи элемента.

  • Индексация элементов. По умолчанию каждый элемент индексируется автоматически. Если вы решили не индексировать некоторые элементы в контейнере, потребляется меньше ЕЗ.

  • Число свойств элемента. Если индексирование по умолчанию установлено для всех свойств, количество единиц запроса, потребляемых для записи элемента, увеличивается по мере увеличения количества свойств элемента.

  • Индексированные свойства. Свойства, которые индексируются по умолчанию, определяются политикой индексирования для каждого контейнера. Чтобы сократить потребление ЕЗ в операциях записи, ограничьте количество индексированных свойств.

  • Согласованность данных. Строгие уровни согласованности и согласованности с ограниченным устареванием потребляют примерно в два раза больше ЕЗ при выполнении операций чтения по сравнению с другими отложенными уровнями согласованности.

  • Тип операций чтения: точечная точка считывает меньше ЕЗ, чем запросы.

  • Шаблоны запросов. Сложность запроса влияет на количество единиц запроса, потребляемых операцией. Факторы, которые влияют на стоимость операций запросов:

    • Количество результатов запроса.

    • Количество предикатов.

    • Характер предикатов.

    • Количество определяемых пользователем функций.

    • Размер исходных данных.

    • Размер результирующего набора.

    • Проекции.

    Один и тот же запрос на одни и те же данные всегда стоит одинаковое количество единиц ЕЗ при повторяющихся выполнениях.

  • Использование скрипта. Так же как и запросы, хранимые процедуры и триггеры расходуют ЕЗ с учетом сложности выполняемых операций. При разработке приложения проверяйте заголовки со стоимостью запросов, чтобы лучше понять, как ресурсы производительности используются каждой из операций.

Единицы запросов и несколько регионов

Если вы назначаете ЕЗ "R" в контейнере Azure Cosmos DB (или базе данных), Azure Cosmos DB гарантирует, что ЕЗ "R" доступны в каждом регионе, связанном с учетной записью Azure Cosmos DB. Нельзя выборочно назначать ЕЗ для определенного региона. ЕЗ, подготовленные в контейнере Azure Cosmos DB (или базе данных), подготавливаются во всех регионах, связанных с учетной записью Azure Cosmos DB.

При условии, что контейнер Azure Cosmos DB настроен с использованием ЕЗ R и есть регионы N , связанные с учетной записью Azure Cosmos DB, общее количество единиц запросов, доступных глобально в контейнере = R x N.

Выбор модели согласованности также влияет на пропускную способность. Вы можете получить приблизительно 2x пропускную способность чтения для более расслабленных уровней согласованности (сеанс, *согласованный префикс и итоговая согласованность) по сравнению с более строгими уровнями согласованности (ограниченная устаревшая или строгая согласованность).