Limitar o número de colecções
Uma instância Milvus permite até 65.536 colecções. No entanto, um número excessivo de colecções pode resultar em problemas de desempenho. Por isso, recomenda-se limitar o número de colecções criadas numa instância do Milvus.
Este guia fornece instruções sobre como definir limites para o número de colecções numa instância do Milvus.
A configuração varia consoante a forma como instala a instância do Milvus.
Para instâncias do Milvus instaladas usando Helm Charts
Adicione a configuração ao ficheiro
values.yamlna secçãoconfig. Para obter detalhes, consulte Configurar o Milvus com Helm Charts.Para instâncias do Milvus instaladas com o Docker Compose
Adicione a configuração ao ficheiro
milvus.yamlque utilizou para iniciar a instância do Milvus. Para obter detalhes, consulte Configurar o Milvus com o Docker Compose.Para instâncias do Milvus instaladas com o Operator
Adicione a configuração à secção
spec.componentsdo recurso personalizadoMilvus. Para obter detalhes, consulte Configurar o Milvus com o Operator.
Opções de configuração
rootCoord:
maxGeneralCapacity: 65536
quotaAndLimits:
limits:
maxCollectionNum: 65536
maxCollectionNumPerDB: 65536
Para alterar o limite de recolha, é necessário modificar os três parâmetros em conjunto:
| Parâmetro | Descrição | Valor por defeito |
|---|---|---|
rootCoord.maxGeneralCapacity | Número máximo de unidades de coleção (shards × partições) que a instância atual pode conter. | 65536 |
quotaAndLimits.limits.maxCollectionNum | Número máximo de colecções permitidas em todas as bases de dados da instância atual. | 65536 |
quotaAndLimits.limits.maxCollectionNumPerDB | Número máximo de colecções permitidas numa única base de dados. | 65536 |
Por exemplo, para aumentar o limite para 200.000 colecções:
rootCoord:
maxGeneralCapacity: 200000
quotaAndLimits:
limits:
maxCollectionNum: 200000
maxCollectionNumPerDB: 200000
Definir apenas maxGeneralCapacity sem ajustar também maxCollectionNum e maxCollectionNumPerDB não terá efeito. Todos os três parâmetros devem ser definidos para o mesmo valor ou superior para aumentar o limite de colecções.
Cálculo do número de colecções
Numa coleção, pode configurar vários shards e partições. Os fragmentos são unidades lógicas utilizadas para distribuir operações de escrita de dados entre vários nós de dados. As partições são unidades lógicas utilizadas para melhorar a eficiência da recuperação de dados, carregando apenas um subconjunto dos dados da coleção. Ao calcular o número de colecções na instância atual do Milvus, também é necessário contar os shards e as partições.
Por exemplo, vamos supor que já criou 100 colecções, com 2 fragmentos e 4 partições em 60 delas e com 1 fragmento e 12 partições nas restantes 40 colecções. O número total de unidades de coleção (calculado como shards × partitions) pode ser determinado da seguinte forma:
60 (collections) x 2 (shards) x 4 (partitions) + 40 (collections) x 1 (shard) x 12 (partitions) = 960
Neste exemplo, o total calculado de 960 unidades de recolha representa a utilização atual. O endereço maxGeneralCapacity define o número máximo de unidades de coleta que uma instância pode suportar, que é definido como 65536 por padrão. Isso significa que a instância pode acomodar até 65.536 unidades de coleta. Se o número total exceder esse limite, o sistema exibirá a seguinte mensagem de erro:
failed checking constraint: sum_collections(parition*shard) exceeding the max general capacity:
Para evitar esse erro, é possível reduzir o número de fragmentos ou partições em coleções novas ou existentes, excluir algumas coleções ou aumentar o limite de coleções modificando maxGeneralCapacity, maxCollectionNum e maxCollectionNumPerDB juntos.