Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это руководство содержит рекомендации по решениям, созданным с помощью последней версии пакета SDK для Python для Azure Cosmos DB для NoSQL. Рекомендации, включенные здесь, помогают повысить задержку, повысить доступность и повысить общую производительность решений.
Конфигурация учетной записи
- Чтобы сократить задержку, запускайте приложение в том же регионе Azure, что и учетная запись Azure Cosmos DB, если это возможно. Включите репликацию в более чем 2 регионах в ваших аккаунтах для обеспечения оптимальной доступности. Для производственных нагрузок включите переключение при отказе, управляемое службой. Если данная конфигурация отсутствует, учетная запись утрачивает возможность записи на протяжении всего времени сбоя в регионе записи, поскольку процедура отказоустойчивости вручную не может быть выполнена из-за отсутствия подключения к региону. Дополнительные сведения о добавлении нескольких регионов с помощью пакета SDK для Python см. в руководстве по глобальному распространению.
Использование пакета SDK
- Всегда используйте последнюю версию пакета SDK Azure Cosmos DB, доступную для оптимальной производительности.
- Используйте один экземпляр
CosmosClientдля времени существования приложения для повышения производительности. - Задайте конфигурацию
preferred_locationsв клиенте Cosmos. Во время отработки отказа операции записи отправляются в текущий регион для записи, а все операции чтения отправляются в первый регион списка предпочитаемых расположений. Дополнительные сведения о региональной отказоустойчивости см. в разделе об устранении неполадок с доступностью. - Временная ошибка — это ошибка, причина которой быстро устраняется сама собой. При разработке приложений, которые подключаются к вашей базе данных, необходимо учитывать возможность появления этих временных ошибок и предусматривать их обработку путем реализации логики повторных попыток в коде вместо вывода пользователю сообщений об ошибках приложения. В SDK есть встроенная логика обработки таких временных ошибок в повторяемых запросах, таких как операции чтения или запроса. Пакет SDK не может повторить попытку записи при транзиторных сбоях, так как записи не являются идемпотентными. В SDK пользователи могут настраивать логику повторных попыток для регулирования. Подробности о том, при каких ошибках стоит повторить попытку, см. здесь.
- Используйте ведение журнала SDK для сбора диагностических сведений и устранения проблем с задержкой.
Проектирование данных
- Плата за запрос (т. е. затраты на обработку запросов) указанной операции напрямую зависит от размера документа. Рекомендуется уменьшить размер документов, так как операции с большими документами стоят больше, чем с меньшими.
- Некоторые символы ограничены и не могут использоваться в некоторых идентификаторах: "/", "\", "?", "#". Общая рекомендация заключается в том, чтобы не использовать специальные символы в идентификаторах, таких как имя базы данных, имя коллекции, идентификатор элемента или ключ секции, чтобы избежать непредвиденного поведения.
- Политика индексирования Azure Cosmos DB также позволяет указать пути к документам для включения или исключения из индексирования с помощью путей индексирования. Исключите из индексирования неиспользуемые пути, чтобы ускорить выполнение операций записи. Дополнительные сведения см. в статье о создании индексов с помощью примера пакета SDK.
Характеристики хоста
- Вы можете столкнуться с проблемами подключения или доступности из-за недостатка ресурсов на клиентском компьютере. Отслеживайте использование ЦП на узлах, где работает клиент Azure Cosmos DB, и масштабируйте вверх или наружу, если использование ЦП высокое.
- Если вы используете для запуска приложения виртуальную машину, включите на ней ускорение сети, чтобы устранить узкие места при большом объеме трафика и уменьшить задержку или нагрузку на ЦП. Кроме того, можно использовать конечную виртуальную машину более высокого класса, где максимальная загрузка ЦП будет составлять менее 70 %.
- По умолчанию результаты запроса возвращаются в блоках из 100 элементов или 4 МБ, в зависимости от того, какое ограничение сначала достигается. Если запрос возвращает более 100 элементов, увеличьте размер страницы, чтобы уменьшить количество необходимых круговых путей. Потребление памяти увеличивается по мере увеличения размера страницы.
Дальнейшие шаги
Дополнительные сведения о советах по повышению производительности пакета SDK для Python см. в разделе "Советы по производительности" для пакета SDK для Python Для Azure Cosmos DB.
Дополнительные сведения о создании приложения с высокой масштабируемостью и производительностью см. в статье Partitioning and scaling in Azure Cosmos DB (Секционирование и масштабирование в Azure Cosmos DB).
Пытаетесь составить план мощностей для миграции в Azure Cosmos DB? Для планирования ресурсов можно использовать сведения об имеющемся кластере базы данных.
- Если вам известно только количество виртуальных ядер и серверов в существующем кластере баз данных, ознакомьтесь с информацией об оценке единиц запросов на основе виртуальных ядер или виртуальных процессоров.
- Если вам известна стандартная частота запросов для текущей рабочей нагрузки базы данных, ознакомьтесь со статьей о расчете единиц запросов с помощью планировщика ресурсов Azure Cosmos DB