Escolher contagem de fragmentos no Azure Cosmos DB for PostgreSQL
APLICA-SE AO: Azure Cosmos DB for PostgreSQL (da plataforma da extensão de dados Citus para PostgreSQL)
Escolher a contagem de fragmentos para cada tabela distribuída é um equilíbrio entre a flexibilidade de ter mais fragmentos e a sobrecarga para planejamento e execução de consultas entre elas. Se você decidir alterar a contagem de fragmentos de uma tabela após a distribuição, poderá usar a função alter_distributed_table.
Caso de uso de SaaS multilocatário
A escolha ideal varia dependendo dos seus padrões de acesso para os dados. Por exemplo, no caso de uso do Banco de Dados SaaS multilocatário, recomendamos escolher entre 32 e 128 fragmentos. Para cargas de trabalho menores, digamos <100 GB, você pode começar com 32 fragmentos e, para cargas de trabalho maiores, pode escolher 64 ou 128. Essa escolha oferece a margem de manobra para escalar de 32 para 128 computadores de trabalho.
Caso de uso de análise em tempo real
No caso de uso da Análise em Tempo Real, a contagem de fragmentos deve estar relacionada ao número total de núcleos nos trabalhos. Para garantir o paralelismo máximo, você deve criar fragmentos suficientes em cada nó, de modo que haja pelo menos um fragmento por núcleo da CPU. Normalmente, recomendamos criar um alto número de fragmentos iniciais, por exemplo, 2x ou 4x o número de núcleos atuais da CPU. Ter mais fragmentos permitirá a escala futura se você adicionar mais trabalhos e núcleos da CPU.
Tenha em mente que, para cada consulta, o Azure Cosmos DB for PostgreSQL abre uma conexão de banco de dados por fragmento e que essas conexões são limitadas. Tenha cuidado para manter a contagem de fragmentos pequena o suficiente para que as consultas distribuídas não precisem esperar por uma conexão. Em outras palavras, as conexões necessárias, (max concurrent queries * shard count)
, não devem exceder o total de conexões possíveis no sistema, (number of workers * max_connections per worker)
.
Próximas etapas
- Saiba mais sobre as opções de desempenho do cluster.
- Escalar ou reduzir um cluster verticalmente
- Reequilibrar fragmentos