Выбор количества сегментов в Azure Cosmos DB для PostgreSQL
Область применения: Azure Cosmos DB для PostgreSQL (на базе расширения базы данных Citus до PostgreSQL)
Выбор количества сегментов для каждой распределенной таблицы — это баланс между гибкостью наличия большего количества сегментов и затратами на планирование запросов и их выполнение. Если вы решите изменить количество сегментов таблицы после распространения, можно использовать функцию alter_distributed_table .
Вариант использования SaaS с несколькими клиентами
Оптимальный выбор зависит от шаблонов доступа для данных. Например, в варианте использования базы данных SaaS с несколькими клиентами рекомендуется выбрать от 32 до 128 сегментов. Для небольших рабочих нагрузок 100 ГБ можно начать с 32 сегментов <и для больших рабочих нагрузок можно выбрать 64 или 128. Этот выбор дает вам возможность масштабирования от 32 до 128 рабочих машин.
Вариант использования аналитики в режиме реального времени
В случае использования аналитики в режиме реального времени количество сегментов должно быть связано с общим количеством ядер для рабочих ролей. Чтобы обеспечить максимальное параллелизм, необходимо создать достаточно сегментов на каждом узле, чтобы на каждом узле было по крайней мере один сегмент на ядро ЦП. Обычно рекомендуется создавать большое количество начальных сегментов, например 2x или 4x количество текущих ядер ЦП. При добавлении дополнительных рабочих ролей и ядер ЦП позволяет в будущем масштабироваться.
Помните, что для каждого запроса Azure Cosmos DB для PostgreSQL открывает одно подключение к базе данных на сегмент и что эти подключения ограничены. Будьте осторожны, чтобы количество сегментов было достаточно небольшим, чтобы распределенные запросы не часто должны ждать подключения. Поместите другой способ, необходимые подключения, (max concurrent queries * shard count)
не должны превышать общее количество подключений, возможных в системе. (number of workers * max_connections per worker)
Следующие шаги
- Дополнительные сведения о параметрах производительности кластера.
- Масштабирование кластера вверх или из него
- Перебалансирование сегментов