Ограничение количества коллекций
Экземпляр Milvus допускает до 65 536 коллекций. Однако слишком большое количество коллекций может привести к проблемам с производительностью. Поэтому рекомендуется ограничить количество коллекций, создаваемых в экземпляре Milvus.
В этом руководстве приведены инструкции по установке ограничений на количество коллекций в экземпляре Milvus.
Конфигурация зависит от способа установки экземпляра Milvus.
Для экземпляров Milvus, установленных с помощью Helm Charts
Добавьте конфигурацию в файл
values.yamlв разделеconfig. Подробнее см. в разделе Настройка Milvus с помощью Helm Charts.Для экземпляров Milvus, установленных с помощью Docker Compose
Добавьте конфигурацию в файл
milvus.yaml, который вы использовали для запуска экземпляра Milvus. Подробнее см. в разделе Настройка Milvus с помощью Docker Compose.Для экземпляров Milvus, установленных с помощью Operator
Добавьте конфигурацию в раздел
spec.componentsпользовательского ресурсаMilvus. Подробнее см. в разделе Настройка Milvus с помощью Operator.
Параметры конфигурации
rootCoord:
maxGeneralCapacity: 65536
quotaAndLimits:
limits:
maxCollectionNum: 65536
maxCollectionNumPerDB: 65536
Чтобы изменить предел сбора, необходимо изменить все три параметра вместе:
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
rootCoord.maxGeneralCapacity | Максимальное количество единиц коллекции (шардов × разделов), которое может содержать текущий экземпляр. | 65536 |
quotaAndLimits.limits.maxCollectionNum | Максимальное количество коллекций, разрешенных для всех баз данных в текущем экземпляре. | 65536 |
quotaAndLimits.limits.maxCollectionNumPerDB | Максимальное количество коллекций, допустимое в одной базе данных. | 65536 |
Например, увеличить ограничение до 200 000 коллекций:
rootCoord:
maxGeneralCapacity: 200000
quotaAndLimits:
limits:
maxCollectionNum: 200000
maxCollectionNumPerDB: 200000
Настройка только maxGeneralCapacity без настройки maxCollectionNum и maxCollectionNumPerDB не возымеет действия. Для увеличения лимита коллекций все три параметра должны быть установлены в одно и то же значение или выше.
Расчет количества коллекций
В коллекции можно создать несколько шардов и разделов. Осколки - это логические единицы, используемые для распределения операций записи данных между несколькими узлами данных. Разделы - это логические единицы, используемые для повышения эффективности поиска данных путем загрузки только подмножества данных коллекции. При подсчете количества коллекций в текущем экземпляре Milvus необходимо также подсчитать количество шардов и разделов.
Например, предположим, что вы уже создали 100 коллекций, в 60 из которых есть 2 шарда и 4 раздела, а в остальных 40 коллекциях - 1 шард и 12 разделов. Общее количество единиц коллекции (вычисляется как shards × partitions) можно определить следующим образом:
60 (collections) x 2 (shards) x 4 (partitions) + 40 (collections) x 1 (shard) x 12 (partitions) = 960
В данном примере рассчитанное общее количество коллекций, равное 960, представляет собой текущее использование. Параметр maxGeneralCapacity определяет максимальное количество единиц коллекции, которое может поддерживать экземпляр, по умолчанию он установлен на 65536. Это означает, что экземпляр может поддерживать до 65 536 единиц сбора. Если общее количество превысит этот предел, система выдаст следующее сообщение об ошибке:
failed checking constraint: sum_collections(parition*shard) exceeding the max general capacity:
Чтобы избежать этой ошибки, вы можете либо уменьшить количество осколков или разделов в существующих или новых коллекциях, либо удалить некоторые коллекции, либо увеличить лимит коллекций, изменив maxGeneralCapacity, maxCollectionNum и maxCollectionNumPerDB вместе.