管理Partitions
更新时间:
在Milvus向量数据库中,创建Collection时系统会自动生成名为_default
的默认分区(Partition),用于存放未指定分区的插入数据。通过合理设置分区,可针对性地缩小查询范围,有效提升检索性能。本文为您介绍如何在Milvus中创建和管理分区。
前提条件
已在本地客户端成功安装了PyMilvus库,并将其更新至当前最新版本。
如果您尚未在本地客户端安装PyMilvus库,或者需要将其更新至当前最新版本,您可以执行以下命令。
pip install --upgrade pymilvus
已创建Milvus实例,请参见详情快速创建Milvus实例。
已创建Collection,详情请参见管理Collections。
使用限制
单个Collection内最多可以创建4096个分区。
查看Partition
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://c-xxxx.milvus.aliyuncs.com:19530", # Milvus实例的公网地址。
token="<yourUsername>:<yourPassword>", # 登录Milvus实例的用户名和密码。
db_name="default" # 待连接的数据库名称,本文示例为默认的default。
)
res = client.list_partitions(collection_name="yourCollectionname")
print(res)
创建Partition
创建分区是在已有的集合基础上进行的,分区是Collection的逻辑子集,用于组织和管理Collection中的数据。因此,在创建分区之前需要先创建对应的Collection。
client.create_partition(
collection_name="<yourCollectionname>", # 待创建分区的Collection名称。
partition_name="<yourPartitionname>" # 待创建的分区的名称。
)
res = client.list_partitions(collection_name="<yourCollectionname>")
print(res)
加载和释放分区
加载Partition
通过查询Load状态,可以确保只对未加载或已卸载的分区进行加载操作。
查看Load状态。
# Release the collection client.release_collection(collection_name="yourCollectionname") # Check the load status res = client.get_load_state(collection_name="yourCollectionname") print(res) res = client.get_load_state( collection_name="yourCollectionname", partition_name="yourPartitionname" ) print(res) res = client.get_load_state( collection_name="yourCollectionname", partition_name="yourPartitionname1" ) print(res)
加载分区。
您可以使用load_partitions函数加载分区到内存中。
client.load_partitions( collection_name="test_milvus", partition_names=["yourPartitionname", "yourPartitionname1"] ) res = client.get_load_status( collection_name="yourCollectionname", partition_name="yourPartitionname" ) res = client.get_load_status( collection_name="yourCollectionname", partition_name="yourPartitionname1" )
卸载Partition
您可以使用release_collection函数来卸载分区。
client.release_partitions(
collection_name="yourCollectionname",
partition_names=["_default", "yourPartitionname", "yourPartitionname1"]
)
res = client.get_load_status(
collection_name="yourCollectionname",
)
删除Partition
您可以使用drop_partition函数来删除分区。
client.drop_partition(
collection_name="yourCollectionname",
partition_name="yourPartitionname"
)
res = client.list_partitions(collection_name="yourCollectionname")
print(res)
文档内容是否对您有帮助?