Limitare il numero di raccolte
Un'istanza Milvus consente fino a 65.536 raccolte. Tuttavia, un numero eccessivo di raccolte può causare problemi di prestazioni. Pertanto, si consiglia di limitare il numero di raccolte create in un'istanza Milvus.
Questa guida fornisce istruzioni su come impostare i limiti al numero di raccolte in un'istanza Milvus.
La configurazione varia a seconda del modo in cui si installa l'istanza Milvus.
Per le istanze Milvus installate utilizzando Helm Charts
Aggiungete la configurazione al file
values.yamlnella sezioneconfig. Per i dettagli, consultare Configurazione di Milvus con Helm Charts.Per le istanze Milvus installate usando Docker Compose
Aggiungere la configurazione al file
milvus.yamlutilizzato per avviare l'istanza Milvus. Per i dettagli, fate riferimento a Configurare Milvus con Docker Compose.Per le istanze Milvus installate con Operator
Aggiungere la configurazione alla sezione
spec.componentsdella risorsa personalizzataMilvus. Per i dettagli, vedere Configurazione di Milvus con Operator.
Opzioni di configurazione
rootCoord:
maxGeneralCapacity: 65536
quotaAndLimits:
limits:
maxCollectionNum: 65536
maxCollectionNumPerDB: 65536
Per modificare il limite di raccolta, è necessario modificare tutti e tre i parametri insieme:
| Parametro | Descrizione | Valore predefinito |
|---|---|---|
rootCoord.maxGeneralCapacity | Numero massimo di unità di raccolta (shard × partizioni) che l'istanza corrente può contenere. | 65536 |
quotaAndLimits.limits.maxCollectionNum | Numero massimo di raccolte consentite in tutti i database dell'istanza corrente. | 65536 |
quotaAndLimits.limits.maxCollectionNumPerDB | Numero massimo di raccolte consentite in un singolo database. | 65536 |
Ad esempio, per aumentare il limite a 200.000 raccolte:
rootCoord:
maxGeneralCapacity: 200000
quotaAndLimits:
limits:
maxCollectionNum: 200000
maxCollectionNumPerDB: 200000
L'impostazione del solo maxGeneralCapacity senza regolare anche maxCollectionNum e maxCollectionNumPerDB non avrà effetto. Tutti e tre i parametri devono essere impostati sullo stesso valore o su un valore superiore per aumentare il limite delle raccolte.
Calcolo del numero di raccolte
In una raccolta è possibile impostare più shard e partizioni. Gli shard sono unità logiche utilizzate per distribuire le operazioni di scrittura dei dati tra più nodi di dati. Le partizioni sono unità logiche utilizzate per migliorare l'efficienza del recupero dei dati caricando solo un sottoinsieme dei dati della raccolta. Quando si calcola il numero di raccolte nell'istanza Milvus corrente, è necessario contare anche gli shard e le partizioni.
Ad esempio, supponiamo di aver già creato 100 raccolte, con 2 shard e 4 partizioni in 60 di esse e con 1 shard e 12 partizioni nelle altre 40 raccolte. Il numero totale di unità di raccolta (calcolato come shards × partitions) può essere determinato come segue:
60 (collections) x 2 (shards) x 4 (partitions) + 40 (collections) x 1 (shard) x 12 (partitions) = 960
In questo esempio, il totale calcolato di 960 unità di raccolta rappresenta l'utilizzo attuale. Il parametro maxGeneralCapacity definisce il numero massimo di unità di raccolta che un'istanza può supportare, che per impostazione predefinita è 65536. Ciò significa che l'istanza può ospitare fino a 65.536 unità di raccolta. Se il numero totale supera questo limite, il sistema visualizza il seguente messaggio di errore:
failed checking constraint: sum_collections(parition*shard) exceeding the max general capacity:
Per evitare questo errore, è possibile ridurre il numero di shard o partizioni nelle raccolte esistenti o in quelle nuove, eliminare alcune raccolte o aumentare il limite di raccolta modificando insieme maxGeneralCapacity, maxCollectionNum e maxCollectionNumPerDB.