管理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状态,可以确保只对未加载或已卸载的分区进行加载操作。

  1. 查看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)
    
  2. 加载分区。

    您可以使用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)