跳到主要内容

管理 Partition

在 Zilliz Cloud 中,Partition 是 Collection 的子集。每个 Partition 都与其所在的 Collection 具有相同的数据结构,但只包含该 Collection 的一部分数据。本节将介绍如何管理 Partition 及相关注意事项。

概述

在 Zilliz Cloud 中,每个 Collection 都包含一个名为 _default 的 Partition。如果 Collection 中不再新增 Partition,所有插入到该 Collection 的数据都会进入这个 Partition 中。所有针对该 Collection 的 Search 和 Query 操作也都是在这个 Partition 中完成的。

您也可以在 Collection 中创建多个 Partition,然后按照某个标准将您的数据分别存放到这些 Partition 中。这样一来,您就可以将 Search 和 Query 操作的范围限制在一个或多个 Partition 中,提升搜索效率。

在 Zilliz Cloud 中,一个 Collection 最多可以分成 1,024 个 Partition。

📘说明

在 Zilliz Cloud 中,Partition Key 是一种基于 Partition 的搜索优化方案,用来根据用户指定的标量字段的取值自动将 Entity 存放到不同的 Partition 中。该功能通常用来实现基于 Partition 的多租户能力,提升搜索性能。如果您想要了解 Partition Key 的详细信息,可以参考使用 Partition Key

查看 Partition 列表

每个 Collection 在完成创建后都会包含一个名为 _default 的 Partition。您可以使用如下代码列出指定 Collection 中定义的 Partition。

from pymilvus import MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

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

print(res)

# Output
#
# ["_default"]

创建 Partition

您也可以根据需要在指定 Collection 中创建多个Partition,以便于分门别类地存放数据。

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

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

print(res)

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

检查 Partition 是否存在

如果您知道某个 Partition 的名字,但不确定其是否存在,可以参考如下代码检查该 Partition 是否存在。

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

print(res)

# Output
#
# True

Load 和 Release Partition

您可以对 Collection 中若干 Partition 单独进行 Load 和 Release 操作。

Load 指定 Partition

您可以 Load 指定 Collection 中的一个或多个 Partition。值得注意的是,只要 Collection 中存在任意一个未加载的 Partition,Collection 的 Load 状态始终为 NotLoaded。

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

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

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

Release 指定 Partition

您也可以 Release 指定 Collection 中的一个或多个 Partition。

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

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

print(res)

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

Partition 中的数据操作

插入与删除 Entity

您也可以在指定 Partition 中执行 Insert、Upsert 和 Delete 操作。具体可参考:

搜索与查询

您也可以在指定 Partition 中执行 Search 和 Query 操作。具体可参考

删除 Partition

您也可以删除不再需要的 Partition。在删除 Partition 前,请确保该 Partition 处于未加载的状态。

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

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

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

print(res)

# ["_default"]