跳到主要内容
版本:v2.6.x

收集数量限制

Milvus 实例最多允许 65,536 个 Collection。不过,过多的 Collection 可能会导致性能问题。因此,建议限制在 Milvus 实例中创建的 Collection 数量。

本指南说明了如何设置 Milvus 实例中的 Collection 数量限制。

配置因安装 Milvus 实例的方式而异。

  • 对于使用 Helm Charts 安装的 Milvus 实例

    将配置添加到values.yaml 文件的config 部分。有关详细信息,请参阅使用 Helm Charts 配置 Milvus

  • 对于使用 Docker Compose 安装的 Milvus 实例

    将配置添加到用于启动 Milvus 实例的milvus.yaml 文件中。有关详细信息,请参阅使用 Docker Compose 配置 Milvus

  • 对于使用 Operator 安装的 Milvus 实例

    将配置添加到Milvus 自定义资源的spec.components 部分。有关详情,请参阅使用 Operator 配置 Milvus

配置选项

rootCoord:
maxGeneralCapacity: 65536

quotaAndLimits:
limits:
maxCollectionNum: 65536
maxCollectionNumPerDB: 65536

要更改 Collection 限制,需要将三个参数一起修改:

参数参数默认值
rootCoord.maxGeneralCapacity当前实例可容纳的最大 Collection 单元数(分片×Partition)。65536
quotaAndLimits.limits.maxCollectionNum当前实例中所有数据库允许的最大 Collection 数。65536
quotaAndLimits.limits.maxCollectionNumPerDB单个数据库中允许的最大 Collection 数。65536

例如,将限制增加到 200,000 个 Collection:

rootCoord:
maxGeneralCapacity: 200000

quotaAndLimits:
limits:
maxCollectionNum: 200000
maxCollectionNumPerDB: 200000
说明

只设置maxGeneralCapacity 而不同时调整maxCollectionNummaxCollectionNumPerDB 将不会生效。必须将所有三个参数设置为相同值或更高,才能提高 Collection 限制。

计算 Collection 数量

在一个 Collection 中,可以设置多个分片和 Partition。分片是用于在多个数据节点之间分配数据写入操作的逻辑单元。Partition 是逻辑单元,用于通过只加载 Collection 数据的子集来提高数据检索效率。在计算当前 Milvus 实例中的 Collection 数量时,还需要计算分片和 Partition 的数量。

例如,假设您已经创建了100 个Collection,其中60 个Collection 有2个分块和4 个Partition,其余40 个Collection 有1 个分块和12 个Partition。收集单元总数(计算公式为shards × partitions )可按如下方式确定:

60 (collections) x 2 (shards) x 4 (partitions) + 40 (collections) x 1 (shard) x 12 (partitions) = 960

在本例中,计算出的 960 个 Collection 单元总数代表了当前的使用情况。maxGeneralCapacity 定义了实例可支持的最大 Collection 单位数,默认设置为65536 。这意味着实例最多可容纳 65,536 个 Collection 单元。如果总数超过此限制,系统将显示以下错误信息:

failed checking constraint: sum_collections(parition*shard) exceeding the max general capacity:

为避免出现此错误,可以减少现有或新收集中的分片或 Partition 数量,删除某些收集,或通过同时修改maxGeneralCapacitymaxCollectionNummaxCollectionNumPerDB 来增加收集限制。