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

管理 Partition

Partition 是一个 Collection 的子集。每个 Partition 与其父 Collection 共享相同的数据结构,但只包含 Collection 中的一个数据子集。本页将帮助你了解如何管理 Partition。

Partition 概述

创建一个 Collection 时,Milvus 也会在该 Collection 中创建一个名为**_default 的**Partition。如果不添加其他 Partition,所有插入到 Collection 中的实体都会进入默认 Partition,所有搜索和查询也都在默认 Partition 内进行。

您可以添加更多 Partition,并根据特定条件将实体插入其中。这样就可以限制在某些 Partition 内进行搜索和查询,从而提高搜索性能。

一个 Collection 最多可以有 1,024 个 Partition。

说明

Partition Key功能是基于 Partition 的搜索优化,允许 Milvus 根据特定标量字段中的值将实体分配到不同的 Partition 中。该功能有助于实现面向 Partition 的多租户,并提高搜索性能。

本页将不讨论此功能。要了解更多信息,请参阅使用 Partition Key

列出 Partition

创建 Collection 时,Milvus 还会在该 Collection 中创建一个名为**_default 的**Partition。您可以按以下方式列出 Collection 中的 Partition。

from pymilvus import MilvusClient

client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# Output
#
# ["_default"]

创建 Partition

您可以向 Collection 添加更多 Partition,并根据特定条件向这些 Partition 插入实体。

client.create_partition(
collection_name="my_collection",
partition_name="partitionA"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# Output
#
# ["_default", "partitionA"]

检查特定 Partition

以下代码片段演示了如何检查特定 Collection 中是否存在 Partition。

res = client.has_partition(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)

# Output
#
# True

加载和释放 Partition

您可以分别加载或释放一个或多个 Partition。

加载 Partition

可以分别加载 Collection 中的特定 Partition。值得注意的是,如果 Collection 中有未加载的 Partition,则 Collection 的加载状态会保持未加载状态。

client.load_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

res = client.get_load_state(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)
# Output
#
# {
# "state": "<LoadState: Loaded>"
# }

释放 Partition

您还可以释放特定 Partition。

client.release_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

res = client.get_load_state(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)

# Output
#
# {
# "state": "<LoadState: NotLoaded>"
# }

Partition 内的数据操作符

插入和删除实体

您可以在特定操作符中执行插入、向 upsert 和删除操作。有关详情,请参阅

搜索和查询

可以在特定 Partition 内进行搜索和查询。详情请参阅

删除 Partition

您可以丢弃不再需要的 Partition。在丢弃 Partition 之前,请确保该 Partition 已被释放。

client.release_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

client.drop_partition(
collection_name="my_collection",
partition_name="partitionA"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# ["_default"]